Mysql

在 group by 子句中使用的列上添加索引是否很好?

  • July 15, 2018

我有一個查詢,例如-

select x, sum(y) from xyz where z>=100 group by x order by sum(y) desc;

如果我要在 x 上添加索引會更快嗎?

在 X 上添加索引會稍微提高您的性能,理想情況下,您需要 X 和 Z 的複合鍵,因為您想對 Z 超過 100 標記的所有內容的每個 X 進行分析,以便索引真正有效的你需要兩者。

但是,此時您正在為特定查詢建構索引,因此對插入/更新/刪除/重新索引/儲存空間的額外處理對於一個查詢來說都是值得的(如果它會被一遍又一遍地使用)在其他位置,它可能在您已經擁有的不同查詢中也很有用)

根據您的表結構和內容的其餘部分,您可以將集群鍵設置為 X、Z,這樣就可以完成這項工作。如果您有列 a,b,c,d,e,f,g 其中 a 是您聚集的標識欄位,那麼這作為二級索引會有所幫助。

但最終,我發現了解索引是否有用的唯一方法是對其進行測試。世界上最好的意志不能確保每個特定的指標都有助於整個系統,只有測試才能做到這一點。

我不認為它會給。因為有時如果“x”是可計算的項目,那麼你如何處理它,這裡沒有索引會起作用。如果索引可用於條件部分列,那麼它將增加您的選擇。

引用自:https://dba.stackexchange.com/questions/54190