背景
经历了前面两篇的介绍MySQL索引,相信大家也可以很清晰的认识到索引。这一节想分享一下在MySQL中给字段加了索引,但是查询的时候却不生效索引的情况,让更多的开发者可以少踩坑,接下来直接进入正文~~~
为什么索引不生效
在上一篇MySQL(二)如何设计索引我们有提到过,MySQL使用的是基于成本的优化器,但是由于查询优化技术是关系型数据库实现中的难点,因此总会有一些索引不生效的情况。
接下来我们先建立一张表,并且插入模拟数据,来分析什么情况索引不生效。
CREATE TABLE `t4` (
`id` int NOT NULL AUTO_INCREMENT,
`account` varchar(50) DEFAULT NULL,
`client_type` tinyint DEFAULT NULL,
`security_code` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_client_type` (`client_type`),
KEY `idx_account` (`account`),
KEY `idx_security_code` (`security_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1、在索引字段上运算
查询数据库表的时候,已经创建了索引,WHERE条件中也包含了索引列