欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql中like是否使用索引

程序员文章站 2022-06-02 19:36:18
...

一.测试数据 

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%'

mysql中like是否使用索引

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

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

  (1)、%在前面

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

mysql中like是否使用索引

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

(2)、%在后面

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

mysql中like是否使用索引

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

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

相关标签: sql