【mysql or条件是否走索引】
mysql or条件是否走索引一、建表,插入数据测试数据库版本为8.0.12DROP 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,UNIQ
·
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的情况如下
这时候完全走索引,因此会更快。
总结
这里仅仅是做了测试得出的结论,如果有不对的地方欢迎指出。
更多推荐
已为社区贡献4条内容
所有评论(0)