MySQL的索引優化

2021-08-19 14:56:17 字數 709 閱讀 1053

假設訂單業務表結構為:

order(oid, date, uid, status, money, time, …)

其中:假設訂單有三種狀態:

0已下單,

1已支付,

2已完成

業務需求,查詢未完成的訂單,哪個

sql更快呢?

結論:方案1最慢,方案2,3,4都能命中索引

但是... 

一:union all 

肯定是能夠命中索引的

select * from order where status=0

union all

select * from order where status=1

說明:二:簡單的

in能夠命中索引

select * from order where status in (0,1)

說明:三:對於

or,新版的

mysql

能夠命中索引

select * from order where status=0 or status=1

說明:四、對於

!=,負向查詢肯定不能命中索引

select * from order where status!=2

說明:五、其他方案

select * from order where status < 2

這個具體的例子中,確實快,但是:

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