0
我的表剛剛有超過15百萬行。 我需要運行這樣的查詢:使用IN子句和子查詢進行極端查詢優化
SELECT ch1.* FROM citizens_dynamic ch1
WHERE ch1.id IN (4369943, ..., 4383420, 4383700)
AND ch1.update_id_to = (
SELECT MAX(ch2.update_id_to)
FROM citizens_dynamic ch2
WHERE ch1.id = ch2.id AND ch2.update_id_to < 812
)
基本上,在IN
條款每個公民將搜索與最接近的一排,但比指定update_id_to
低。
2列第update_id_to, id
列有PRIMARY鍵。 目前,此查詢在0.9s內執行(IN
子句中有100個ID)。 它仍然太慢,我需要運行腳本3天才能完成。
下面你可以看到我的EXPLAIN
輸出。
id
指數就像是主鍵,但逆轉列:id, update_id_to
你有什麼想法如何使它更快?