【mysql or条件是否走索引】

本文探讨了在MySQL中,带有OR条件的查询如何影响索引利用,以及何时选择使用AND以提高性能。通过实例演示,指出了最左匹配原则在决定是否走索引中的作用,并提醒避免不必要的OR条件以保持高效查询。

mysql or条件是否走索引


一、建表,插入数据测试

数据库版本为8.0.12
在这里插入图片描述

DROP TABLE IF EXISTS `a`;
CREATE TABLE `a` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(255) DEFAULT NULL,
  `sex` varchar(255) DEFAULT NULL,
  UNIQUE KEY `id` (`id`),
  KEY `index2` (`name`,`sex`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

INSERT INTO `a` VALUES ('2', '小东', '男');
INSERT INTO `a` VALUES ('1', '小明', '男');
INSERT INTO `a` VALUES ('3', '小西', '女');

并且建立组合索引(name,sex)

二、测试查询数据是否走索引

1.测试sql

explain select *from a where name =‘小’ or sex =‘女’
在这里插入图片描述
可以看到增加了or条件,仍然是可以走索引的,只要符合最左原则条件查询。但是会有using where条件过滤,会导致性能有下降,因此能不用还是最好不要用or。

如果用and的情况如下

在这里插入图片描述
这时候完全走索引,因此会更快。

总结

这里仅仅是做了测试得出的结论,如果有不对的地方欢迎指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值