寫在前面:索引對查詢的速度有著至關重要的影響,理解索引也是進行資料庫效能調優的起點。
1、全值匹配
在建立索引時,查詢(排序)欄位的個數和索引個數相匹配為最佳。
2、最佳左字首法則:查詢從索引的最左前列開始並且不跳過索引中的列。
3、不在索引列上做任何操作(計算、函式、(自動or手動)型別轉換),否則會導致索引失效而轉向全表掃瞄。
4、儲存引擎不能使用索引中範圍條件右邊的列,即當where查詢出現範圍查詢時,範圍查詢的後面字段無法使用索引。
5、盡量使用覆蓋索引(只訪問索引的查詢(索引列和查詢列一致)),減少「select *「的使用。
6、mysql在使用不等於(!=或者<>)的時候,無法使用索引導致全表掃瞄。
7、is null,is not null 也會導致索引失效。
8、like以萬用字元開頭(『%abc』)會導致索引失效,如果可以最好百分號%在右側(『abc%』)。
9、字串必須加單(雙)引號,否則資料庫會進行型別轉換(如資料型別為varchar,而查詢時輸入的為數字。查詢時資料庫會先將int轉換成varchar)導致資料庫失效。
10、少用or,用他來連線時會導致索引失效。
11、案例總結
【優化總結口訣】
全只匹配我最愛,最左字首要遵守;
帶頭大哥不能死,中間兄弟不能斷;
索引列上少計算,範圍之後全失效;
like百分寫最右,覆蓋索引不寫星;
不等空值還有or,索引失效要少用;
MySQL優化 之 索引
四種索引 主鍵索引,唯一索引,普通索引,全文索引 對查詢語句會提高效率 對增刪改語句會降低效率,因為還要對索引進行增刪改!建立索引會佔磁碟空間 對頻繁查詢的字段應建立索引,對頻繁更新的字段不適合建立索引 1 新增 1.1 主鍵索引新增 1.當一張表,把某個列設為主鍵的時候,則該列就是主鍵索引 cre...
Mysql優化之索引
索引其實就是乙個檔案,它與mysql資料檔案不一樣的地方是 它是順序的儲存資料,檔案小且儲存的位置也不一樣 索引能加快檢索,但系統每一次維護資料 寫入 更新 的同時也需要維護索引,帶來額外的開銷。索引按照底層實現方式分為 b樹索引 r樹索引 雜湊索引等 索引按照具體表現分為 主鍵索引 primary...
效能優化之mysql索引優化
sql及索引優化 如何通過慢查詢日誌發現有問題的sql?查詢次數多且每次查詢占用時間長的sql 通常為pt query digest分析的前幾個查詢 io大的sql 注意pt query digest分析中的rows examine項 未命中索引的sql 注意pt query digest分析中ro...