[英]How to speed up the update query on MySql for millions of records
我有一個包含 2700 萬個 id 列的表。 我計划從另一個需要很長時間才能完成的表中更新平均值和計數。
Below is the update query (Database - MySQL, I am using Python to connect to the Database) UPDATE dna_statistics SET chorus_count = (SELECT count(*) FROM dna B WHERE B.music_id = <music_id> AND B.label = 'Chorus') WHERE music_id = 916094
正如 scaisEdge 已經說過的,您需要檢查兩個表上是否有索引。
我想補充一下 scaisEdge 的答案,即復合索引中列的順序應該與您比較它們的順序相匹配。
你用過
WHERE B.music_id = <music_id>
AND B.label = 'Chorus')
因此,您的索引應該由按順序排列的列(music_id,label)而不是(label,music_id)組成。
我會將此添加為評論,但我距離評論還有 1 個聲譽點。
UPDATE子句不是 2700 萬個 id 的好解決方案
改用EXCHANGE PARTITION
https://dev.mysql.com/doc/refman/5.7/en/partitioning-management-exchange.html
確保你有一個 cmposite 索引
table dna column ( label, music_id)
和一個索引
table dna_statistics column (music_id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.