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类型,建立了普通索引
为嘛从执行计划中查看没走索引
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类型,建立了普通索引
为嘛从执行计划中查看没走索引
a.单列索引无法储null值,复合索引无法储全为null的值。 b.查询时,采用is null条件时,不能利用到索引,只能全表扫描。 为什么索引列无法存储Null值? a.索引是有序的。NULL值进入索引时,无法确定其应该放在哪里。(将索引列值进行建树,其中必然涉及到诸多的比较操作,null 值是不确定值无法 比较,无法确定null出现在索引树的叶子节点位置。) b.如果需要把空值存入索引,方法有二:其一,把NULL值转为一个特定的值,在WHERE中检索时,用该特定值查找。其二,建立一个复合索引。例如 create index ind_a on table(col1,1); 通过在复合索引中指定一个非空常量值,而使构成索引的列的组合中,不可能出现全空值。