sql效能下降會導致執行時間長,等待時間長。
導致sql效能下降的原因有4點:
索引是幫助mysql高效獲取資料的資料結構,索引是資料結構。索引的目的在於提高查詢效率,在這些資料結構的基礎上實現高階查詢演算法。
索引本身很大,往往以索引檔案的形式儲存在磁碟上,一般索引都是b樹結構、b+樹結構、雜湊結構。
索引優缺點
索引優點:
索引缺點:
索引分類
建立索引的情況
主鍵自動建立唯一索引
頻繁作為查詢條件的字段應該建立索引
查詢中與其他表關聯的字段,外來鍵關係建立索引
頻繁更新的字段不適合建立索引,每次更新資料需要更新索引
where條件裡用不到的字段不建立字段
查詢中要排序的字段,排序字段通過索引,會提高排序速度
其中,表記錄太少(百萬以下),頻繁更新的表,資料重複且分布平均的字段,這些情況不適合建立索引。
避免範圍查詢,會使索引失效。等值查詢是最優的。多表查詢時,小表驅動大表,小表建立索引。盡量使用覆蓋索引,只訪問索引的查詢。
索引失效情況
最佳左字首法則,如果索引多列,要遵守最左字首法則,查詢從最左前列開始,否則索引失效。如果查詢欄位跳過索引中間列,會造成索引部分使用,部分失效。
不在索引列上做任何操作,計算,函式等,會導致索引失效而轉向全表掃瞄。
範圍查詢會使索引失效。
使用!=和<>的時候會使索引失效導致全表掃瞄
is null,is not null也會使索引失效
like'%string',%開頭會使索引失效,可以放右邊。或覆蓋索引,避免索引失效。
字串不加單引號,索引失效
or連線時,索引失效
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...