我可以透過在 fld_date.txt 上新增索引來改進「ORDER BY」嗎?
SELECT * FROM t1 WHERE fld1='XXX' fld2='XXX' ORDER BY fld_date;
該查詢在 where 子句中使用 (fld1,fld2 - 組合索引) 的索引。由於 ORDER BY 與索引不完全匹配,如果我添加帶有 fld_date 的索引,它將有助於提高 ORDER BY fld_date 的效能。 ?
答案1
您應該在 (fld1, fld2, fld_date) 上新增索引。請注意,只有當 fld1 和 fld2 在子句中設定為完全匹配時,它才會起作用WHERE
,非精確表達式(例如<
or )>
將關閉索引以進行排序。
答案2
看看聚集索引,它們可以在某些情況下使用大型資料集來提高效能,顯然這就是在運算能力非常有限時 SQL 風格資料庫所使用的。
資料來源:我正在與一位高級開發人員合作,他提到他們將使用索引來避免由於吞吐量限製而必須選擇資料庫中的實際值。
根據我檢查過的文檔,它們只是“主鍵”,但它們與以前不同,可能需要挖掘才能從中獲得任何模糊的性能優勢。
更多資訊可以在這裡找到:https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html
請參閱參考文章中的標題「影響 ORDER BY 優化」。