MySQL索引優化

2022-03-09 01:23:38 字數 845 閱讀 2150

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...