mysql中like是否使用索引

x33g5p2x  于2022-03-25 转载在 Mysql  
字(0.7k)|赞(0)|评价(0)|浏览(723)

一.测试数据

CREATE TABLE `test_orderdetail` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) DEFAULT NULL,
  `product_name` varchar(100) DEFAULT NULL,
  `cnt` int(11) DEFAULT NULL,
  `create_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_orderid_productname` (`product_name`,`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8

注意:复合索引要注意索引前导列,否则可能导致索引不能生效

1、在使用like的时候,如果使用‘%%’,会不会用到索引呢?

EXPLAIN SELECT * FROM  `test_orderdetail` WHERE product_name LIKE '%c%'

这种情况下,like时是没有使用到索引,进行了全表扫描

2、在使用like的时候,如果使用‘%’,会不会用到索引呢?

(1)、%在前面

EXPLAIN SELECT * FROM  `test_orderdetail` WHERE product_name LIKE '%c'

%在前的这种情况也是进行全表扫描,索引没有生效

(2)、%在后面

EXPLAIN SELECT * FROM  `test_orderdetail` WHERE product_name LIKE 'c%'

%在后面这种情况,可以看到索引生效了

总结:mysql在使用like时,只有%在后面时,索引才会生效

相关文章

微信公众号

最新文章

更多