全值匹配我最愛,最左字首要遵守;
帶頭大哥不能死,中間兄弟不能斷;
索引列上少計算,範圍之後全失效;
like百分寫最右,覆蓋索引不寫星;
不等空值還有or,索引失效要少用;
var引號不可丟,sql高階也不難!
「全值匹配我最愛」
「帶頭大哥不能死」,火車頭可以單獨跑,車廂不能單獨跑
「最左字首要遵守」,組合索引:name,age,pos,但是只有當最左側的name存在時,索引才有效
「中間兄弟不能斷」
type=ref 絕對用到了索引
possible_keys=idx_staffs_nameagepos 可能用到了索引
key = idx_staffs_nameagepos 實際上用到的索引
但是是全職匹配的部分使用,因為如果用到了索引中的兩個,key_len應該等於78,ref應該等於const,const
「範圍之後全失效」,範圍只能用到一部分排序,而不能用到查詢
盡量使用覆蓋索引,減少select *
在使用不等於(!=或者<>)的時候無法使用索引會導致全表掃瞄
is null ,is not null 也無法使用索引
百分like加右邊
少用or,否則索引失效
索引最好怎麼建的怎麼用,這樣避免mysql底層翻譯和轉換
字串不加單引號索引失效
資料庫會把2000隱式的自動的轉換為string型別,但是在索引列上做任何操作(計算,函式,(自動or手動)型別轉換),會使索引失效
問題:如何解決like『%字串%』時索引不被使用的方法?
答:使用覆蓋索引,建的索引和查的字段個數順序最好完全一致
mysql 優化 聚集索引 mysql 索引優化
一.聚集索引 clustered index innodb預設依據主鍵列聚集,myisam不使用 特點 b樹每個葉子包含實際資料行,資料按照索引順序地儲存在物理頁上。優點 1.範圍查詢,獲取指定id的全部資料只需從磁碟讀取少量資料頁 如果不使用聚集索引,每條資料可能引起一次磁碟io。2.由於索引和資...
mysql索引優化原則 MySQL 索引優化原則
索引優化原則 1 最左字首匹配原則,聯合索引,mysql會從做向右匹配直到遇到範圍查詢 3 and d 4 如果建立 a,b,c,d 順序的索引,d是用不到索引的,如果建立 a,b,d,c 的索引則都可以用到,a,b,d的順序可以任意調整。2 和in可以亂序,比如a 1 and b 2 and c ...
mysql索引優化原則 MySQL索引優化
mysql官方對索引的定義 索引是幫助mysql高效獲取資料的資料結構。索引是在儲存引擎中實現的,所以每種儲存引擎中的索引都不一樣。如myisam和innodb儲存引擎只支援btree索引 memory和heap儲存引擎可以支援hash和btree索引。這裡僅針對常用的innodb儲存引擎所支援的b...