簡體   English   中英

使用適當的索引優化mysql查詢

[英]Optimizing mysql query with the proper index

我有一張1510萬記錄的表。 我正在運行以下查詢,以處理記錄以進行重復檢查。

select id, name, state, external_id 
from companies
where dup_checked=0 
order by name 
limit 500;

當我在查詢中使用擴展說明時,它告訴我它正在使用index_companies_on_name索引,該索引僅是公司名稱的索引。 我假設這是由於訂購。 我嘗試根據名稱和dup_checked字段創建其他索引,希望它可以使用此索引,因為它可能更快,但仍使用index_companies_on_name索引。

最初它足夠快,但是現在我們只剩下330萬條記錄需要檢查,並且此查詢最多需要90秒才能執行。 我不太確定該怎么做才能使運行速度更快。 答案是其他索引還是其他我沒有想到的索引? 謝謝。

通常,這里的技巧是創建一個索引,該索引首先進行過濾,以減少行數(“基數”),然后對其進行排序:

CREATE INDEX `index_companies_on_dup_checked_name`
  ON `companies` (`dup_checked`,`name`)

那應該給您您需要的范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM