一.测试数据
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%'
%在后面这种情况,可以看到索引生效了
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://lebron.blog.csdn.net/article/details/123724556
内容来源于网络,如有侵权,请联系作者删除!