索引註意事項 (1)最左首碼原則 如果查詢的時候,查詢條件精確匹配索引的左邊連續一列或幾列,則可以命中索引。 (2)避免where 子句中對欄位施加函數,如to_date(create_time)>xxxxxx,這樣會造成無法命中索引。 (3)在使用InnoDB 時,使用與業務無關的自增主鍵作為主鍵... ...
索引註意事項 (1)最左首碼原則 如果查詢的時候,查詢條件精確匹配索引的左邊連續一列或幾列,則可以命中索引。 (2)避免where 子句中對欄位施加函數,如to_date(create_time)>xxxxxx,這樣會造成無法命中索引。 (3)在使用InnoDB 時,使用與業務無關的自增主鍵作為主鍵,即使用邏輯主鍵,而不要使用業務主鍵。 (4)合理利用索引覆蓋 覆蓋索引(Covering index)指一個查詢語句的執行,只需要從輔助索引中就可以得到查詢記錄,而不需要查詢聚集索引中的記錄,也可以稱之為實現了索引覆蓋。 簡單來說,就是查詢條件命中了索引,而查詢欄位也屬於索引中的欄位。 當實現了覆蓋索引的時候,explain 命令的Extra 會顯示 using Index。 (5)避免冗餘索引 可以查詢sys 庫的schemal_redundant_indexes 表來查看冗餘索引。 (6)將打算加索引的列設置為 NOT NULL,否則將導致引擎放棄使用索引,而進行全表掃描。 (7)刪除長期未使用的索引 可以查詢sys 庫的 schema_unused_indexes 視圖來查詢從未使用過的索引。 (8)聯表查詢,也可以使用索引:
- 確保 ON 和 USING 中列上有索引。
- 確保任何的 GROUP BY 和 ORDER BY 中的表達式只涉及一個表中列。