MySQL的or in union與索引優化

2021-08-04 14:20:33 字數 836 閱讀 2343

假設訂單業務表結構為:

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

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

六、作業

這樣的查詢能夠命中索引麼?

注:此為示例,別較真

sql對應業務的合理性。

or in union與索引優化

一 union all 肯定是能夠命中索引的select from order where status 0 union allselect from order where status 1union 操作符用於合併兩個或多個 select 語句的結果集。預設地,union 操作符選取不同的值。如...

mysql的恢復 MYSQL的恢復

恢復就簡單多了!只要執行該備份檔案就行了,該備份檔案是sql哦!恢復完全備份mysql uroot p backup.sql 就這麼簡單!恢復增量備份mysqlbinlog mysql bin.000002 mysql u root p 注意此次恢復過程亦會寫入日誌檔案,如果資料量很大,建議先關閉日...

mysql的查詢日誌 mysql

這篇文章總結了mysql中查詢日誌的知識點。mysql中,日誌可以按照功能分為如下幾類。錯誤日誌 查詢日誌 慢查詢日誌 二進位制日誌 中繼日誌 innodb儲存引擎級別的事務日誌 查詢日誌 查詢日誌在mysql中被稱之為general log 通用日誌 不要被 查詢日誌 的名字誤導,錯誤的以為查詢日...