单表查询,尝试使用 a != xx 或者 a not in (xx) 或者 a <> xx 或者 a > xx or a < xx,看执行计划都不走索引。请问各位大牛 mysql 有没有比较好的执行不等于的操作的方法
|
realpgJan 23, 2018
1
数字的话,用< union >
|
|
2
感觉好像歧义了,不是什么特殊括号,是用小于 union 大于
|
|
3
一般是建立 联合索引比如 index(a, b) 然后查询的时候 where a = key1 and b > ... 。这个时候 b 的不等于操作是基于 a 字段索引下的扫描。B+树的构造决定了索引怎么走。另外,现在只需要写 SQL 就可以直出 web 了:enhancer.io
|
|
6
@K1W1 只有一个字段的话,数据库优化器会判断候选结果集是否超出了全部结果的 5%(估计),如果超过,那么就全表扫描。所以像> < in 这种操作,走不走索引要看本身可能的结果数量。
|