一.测试数据
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%'
%在后面这种情况,可以看到索引生效了