select XX,XX from `table`
WHERE
(user_id = 'a7ae8176763b9643cc92edc4dc318' or cur_user_id = 'a7ae81767e63b063cc92dc4dc3718')
AND ticket_time BETWEEN '2018-08-15 02:29:18' AND '2018-08-16 02:29:18'
innodb引擎,user_id,cur_user_id , 走了索引,ticket_time date型別,建立了普通索引
為嘛從執行計劃中查看沒走索引
uj5u.com熱心網友回復:
`欄位型別 ticket_time` datetime DEFAULT NULL,uj5u.com熱心網友回復:
你試一下只查詢 時間那個欄位 看他走 索引不?uj5u.com熱心網友回復:
ticket_time是不是存盤過null值,網上其他地方看到對于null值的解釋索引無法存盤null值
a.單列索引無法儲null值,復合索引無法儲全為null的值。
b.查詢時,采用is null條件時,不能利用到索引,只能全表掃描。
為什么索引列無法存盤Null值?
a.索引是有序的。NULL值進入索引時,無法確定其應該放在哪里。(將索引列值進行建樹,其中必然涉及到諸多的比較操作,null 值是不確定值無法
比較,無法確定null出現在索引樹的葉子節點位置。)
b.如果需要把空值存入索引,方法有二:其一,把NULL值轉為一個特定的值,在WHERE中檢索時,用該特定值查找。其二,建立一個復合索引。例如
create index ind_a on table(col1,1); 通過在復合索引中指定一個非空常量值,而使構成索引的列的組合中,不可能出現全空值。
uj5u.com熱心網友回復:
如果影響效率的話建議你分開查,分別為time跟userid建立兩個聯合索引。用union還是union all你可以根據具體的業務來判斷,如果可能有重復資料就union去重,如果沒有重復資料使用union all更好。或者分開查詢,后臺代碼多執行緒處理。uj5u.com熱心網友回復:
哈希值不適合做索引, 做了效率也不高轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/80817.html
標籤:MySQL
上一篇:MongoDb Aggregation.project()與Aggregation.group().sum()在Springboot中的用法問題
下一篇:Mysql主從同步 Found table map event mapping table id 0 which was already mapped...
