我有一套大約110萬個唯一ID,我需要確定哪些數據庫中沒有對應的記錄。這組ID也來自數據庫,但不是同一個。我使用的是PHP和MySQL,並且擁有大量內存 - PHP運行在具有15GB內存的服務器上,MySQL運行在擁有7.5GB RAM的自己的服務器上。比較大型MySQL數據集與PHP
一般情況下我簡單地裝載所有的ID在一個查詢,然後用它們用SELECT查詢的IN子句做比較,在一杆。
到目前爲止,我的嘗試已經導致腳本可以接受一個無法忍受的很長一段時間,或者會使CPU到100%。
什麼是加載一個大型數據集,做這種比較的最佳方式?
使用左連接而不是in in子句。 – 2011-04-20 20:19:58
你應該配置你的MySQL實例,以便它可以在內存中加載數據集(1.1mil應該容易適應7.5gb的ram),並且按照nick的說法使用左連接而不是不連接。它更高效,查詢應該非常快。 – 2011-04-20 20:48:26