MySQL 中索引優化(即避免索引失效)

2022-06-20 20:54:16 字數 1184 閱讀 3082

全值匹配:查詢欄位按順序在索引中都可以找到。

最左字首法則:查詢欄位與索引欄位不同時,會導致索引失效,即如果索引了多列,則查詢欄位從索引最左前列開始,不要跳過已有索引列。

不要再索引上做任何計算:包括計算、函式、(自動或手動)型別轉換。

索引列上不能有範圍:將可能做範圍查詢的字段放在索引順序的最後。

盡量使用索引覆蓋:即查詢列與索引列一致,不要寫select *

不要使用!=<>

使用is nullis not null可能導致索引失效

例:

select age from students where name is not null;

此時,name欄位索引失效

當,name 字段允許為 null 時:

select age from students where name is null;

可以使用索引,但 is not null 不可以

like 模糊查詢:字首中不能出現「%」。

減少使用 or:用union allnuion代替or

字串一定要加單引號

全職匹配我最愛,最左字首要遵守;

帶頭大哥不能死,中間兄弟不能斷;

索引列上少計算,範圍之後全失效;

like 百分寫最右,覆蓋索引不寫*;

不等空值還有 or,索引影響要注意;

var 引號不可丟,sql 優化有訣竅。

對於單鍵索引,盡量選擇針對當前query過濾性更好的索引。

在選擇組合索引的時候,當前query中過濾性最好的字段在索引字段順序中,位置越靠前越好。

在選擇組合索引的時候,盡量選擇可以能包含當前query中的where子句中更多字段的索引。

盡可能通過分析統計資訊和調整query的寫法來達到選擇合適索引的目的。

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