mysql 覆盖索引,不等于条件用不到索引

coFinder 2013-08-27 11:37:10
语句1

SELECT
ID
FROM
TABLE111
WHERE COL1 = 33
AND COL2 != 26
AND COL3 = 0
AND COL4 = 1


语句2

SELECT
ID
FROM
TABLE111
WHERE COL1 != 33
AND COL2 = 26
AND COL3 = 0
AND COL4 = 1



我有个覆盖索引
COL1 ,COL2 ,COL3 ,COL4,ID

两条语句都能用到覆盖索引,
单数差距在下面,第一条只扫描了所需要的行
第二条扫描了所有
1 PRIMARY SE_BASE_CONFIG range cover_index cover_index 4 (NULL) 100 Using where; Using index

2 UNION SE_BASE_CONFIG range cover_index cover_index 2 (NULL) 52526 Using where; Using index
...全文
344 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2013-08-27
  • 打赏
  • 举报
回复
肯定用到第一列索引 因为第一列排除的数据比较少 所以采用索引扫描
coFinder 2013-08-27
  • 打赏
  • 举报
回复
难道说 使用不等于(!= 或者 <>)的时候 第一列的索引用不到了??
ACMAIN_CHM 2013-08-27
  • 打赏
  • 举报
回复
贴出 show index from 以供分析。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧