1
我是mySQL和PHP的新手,我陷入了性能問題。 我有不同的唯一ID數據庫,我想提取由ID幾行(從數組)出過5000的最佳解決辦法,我想出了迄今使用:在SQL數據庫中搜索單個數據庫
SELECT * FROM `table` WHERE id IN ($idArray);
是否有更有效的方法來做到這一點? '表'中的'id'是唯一的字符串。
我是mySQL和PHP的新手,我陷入了性能問題。 我有不同的唯一ID數據庫,我想提取由ID幾行(從數組)出過5000的最佳解決辦法,我想出了迄今使用:在SQL數據庫中搜索單個數據庫
SELECT * FROM `table` WHERE id IN ($idArray);
是否有更有效的方法來做到這一點? '表'中的'id'是唯一的字符串。
我看到IN
列表中的70,000個數字是「呆滯」的。
問題的一部分是索引。您的table
需要INDEX(id)
(或更好的PRIMARY KEY(id)
)。
問題的一部分是緩存。如果table
足夠小以適應buffer_pool,並且該緩存很溫暖,那麼它更像是溫暖和潮溼的東西從鏟子上掉下來。
但是...如果你的「數組」是已經在表中,那麼簡單地JOIN
到那張表。這可能會更快。 OTOH,爲此目的建立一張桌子可能會變慢。
爲什麼是ids字符串? – ThisGuyHasTwoThumbs
如果ids *是唯一的 - 就像它們在數據庫中有唯一的索引('PRIMARY'或'UNIQUE')那麼在僅僅5000條記錄上,它應該是快速的 - 就像鏟子一樣! – CD001
這與它將要獲得的效率一樣高,只要確保在'id'字段中有一個索引即可。 –