2011-05-25 54 views
0

我現在很長一段時間刮我的頭,最後回到這裏直接問你這個問題。它非常簡單,但我正在尋找最快的解決方案。 MySQL首選,但如果你指出我喜歡Cassandra,那也會很棒。最快的方法來比較陣列對(mysql)表

1)與用戶ID'S(BIGINT多達1000名不同的條目) 2)SQL表,其中該entires可以在一列中occure陣列

所以什麼實際的最快途徑,以檢查是否這些ID的之一在一行中發生並返回匹配的行。

您是否仍然通過破壞1000個條目的整個數組並做出類似FROM表的字段WHERE字段IN ???

任何提示,信息將高度讚賞!

Saludos Boosh

回答

0

你可以執行你的數組中的所有條目的質量輸入到一個臨時表,然後執行內部聯接與參考表來獲得其中ID是存在於表中的條目。

問候

+0

但使用臨時表的利益將受到巨大的插入所抵消。 – 2011-05-25 10:25:18

+0

可能,是的。但是,在SAP DB(使用ABAP)中,當由於語言和/或DB的模仿而必須將查詢拆分爲多個時,這比執行「WHERE ID IN ...」更快 – 2011-05-25 12:03:33

2

你仍然會被爆1000項全陣列做到這一點,製造類似FROM表WHERE場???

是的。如:id IN (?, ?, ?, ...)。或者,如果你的數據庫支持數組(MySQL不),id = ANY (ARRAY[?, ?, ?, ...])

或者,如果使用一個小的子查詢有空他們,你可以使用:

id IN (SELECT id FROM ...)