2017-07-25 82 views
1

我是mySQL和PHP的新手,我陷入了性能問題。 我有不同的唯一ID數據庫,我想提取由ID幾行(從數組)出過5000的最佳解決辦法,我想出了迄今使用:在SQL數據庫中搜索單個數據庫

SELECT * FROM `table` WHERE id IN ($idArray); 

是否有更有效的方法來做到這一點? '表'中的'id'是唯一的字符串。

+0

爲什麼是ids字符串? – ThisGuyHasTwoThumbs

+3

如果ids *是唯一的 - 就像它們在數據庫中有唯一的索引('PRIMARY'或'UNIQUE')那麼在僅僅5000條記錄上,它應該是快速的 - 就像鏟子一樣! – CD001

+3

這與它將要獲得的效率一樣高,只要確保在'id'字段中有一個索引即可。 –

回答

0

我看到IN列表中的70,000個數字是「呆滯」的。

問題的一部分是索引。您的table需要INDEX(id)(或更好的PRIMARY KEY(id))。

問題的一部分是緩存。如果table足夠小以適應buffer_pool,並且該緩存很溫暖,那麼它更像是溫暖和潮溼的東西從鏟子上掉下來。

但是...如果你的「數組」是已經在表中,那麼簡單地JOIN到那張表。這可能會更快。 OTOH,爲此目的建立一張桌子可能會變慢。