SELECT COUNT(*) AS num FROM test
WHERE ( a
= 111 AND cid
= 21432 OR s_status
<> 'yes' OR t_status
<> 'yes' ) AND test
.delete_time
IS NULL LIMIT 1
explain 这个语句type显示为ALL该怎么优化?
SELECT COUNT(*) AS num FROM test
WHERE ( a
= 111 AND cid
= 21432 OR s_status
<> 'yes' OR t_status
<> 'yes' ) AND test
.delete_time
IS NULL LIMIT 1
explain 这个语句type显示为ALL该怎么优化?
楼上正解,首先,要尽量减少一些楼上说的操作。不然,永远是 all 。:) 。看你 sql 语句,可以知道你的需求,应该是统计数据数量。条件分别为 a= 111 ,cid = 21432 | s_status != yes | t_status != yes ,test.delete is null。最终结果为: 好了,不可能的,优化不了,(至少我是)。首先,要想用 索引,先将 null 禁止,用 0 或者其它代替。二,yes 这个不要用不等,用 like 进行检索,可以配合 if 方法。
个人理解,希望对你有所帮助
参考:使用UNION合并查询
参考:如果是确定且有限的集合时,可以使用IN
参考:将本为null值针对字段类型赋个默认值(String 则为"",以此类推)