mysql索引问题大全

创建索引
ALTER TABLE staffs ADD INDEX idx (NAME, age)
查看索引
SHOW INDEX FROM staffs
删除索引
DROP INDEX idx ON staffs
查看mysql版本
select version()

检查优化器开关配置命令:
show global variables like 'optimizer_switch' \G
或者
show global variables like 'optimizer_switch'

关于使用or索引,有很多争议,自己亲测,带有or索引就会失效

测试版本信息:mysql版本5.6.34-log,查询优化器开启了index_merge_union=on,环境:navicat
测试所创建索引字段:ALTER TABLE staffs ADD INDEX idx_name (name, age, pos);
索引正常
EXPLAIN SELECT * FROM staffs WHERE name = 'July'
索引失效
EXPLAIN SELECT * FROM staffs WHERE name = 'July' OR age = 25
索引失效
EXPLAIN SELECT * FROM staffs WHERE name = 'July' OR age = 25 or pos = '实习生'

为两个字段单独创建索引:ALTER TABLE staffs ADD INDEX idx_name (anme);
为两个字段单独创建索引:ALTER TABLE staffs ADD INDEX idx_age (age);
索引正常
EXPLAIN SELECT * FROM staffs WHERE name = 'July'
索引失效
EXPLAIN SELECT * FROM staffs WHERE name = 'July' OR age = 25
索引失效
EXPLAIN SELECT * FROM staffs WHERE name = 'July' OR age = 25 or pos = '实习生'



EXPLAIN 得到各字段含义参考:
https://blog.csdn.net/why15732625998/article/details/80388236



全面详细解释参考:https://blog.csdn.net/why15732625998/article/details/80409164




备注:or能够进行索引的,欢迎留言,谢谢

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值