创建了一个test_demo表,在其中加了5000+条数据
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `tb_test`;
CREATE TABLE `tb_online_disk_mgmt` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`node_name` varchar(512) NOT NULL COMMENT '节点名称',
`node_level` tinyint(4) NOT NULL COMMENT '节点所在层',
`area_code` int(11) NOT NULL COMMENT '区域代码',
PRIMARY KEY (`id`),
KEY `area_level_name` (`area_code`,`node_level`,`node_name`(255)) USING BTREE,
KEY `area_name` (`area_code`,`node_name`(255))
)
模糊查询不会使用索引,会进行全表查询。在mysql5.5中进行试验。通过结果对比的确可以看出like "%xxx%"这种是没有使用索引,进行了全表查询的,但是key为什么会显示area_level_name呢?正常的在进行全表扫描的时候,没有用到索引,key不用改为空吗?
求帮助~~~不要沉....
extra 没有Using index啊,你用主键查找肯定有Using index
有Using index啊,你用主键查找肯定有Using
Using index忘记了吧
using index :使用覆盖索引的时候就会出现
using where:在查找使用索引的情况下,需要回表去查询所需的数据
这个是网上解释 ,意思就是两个sql都用到了索引,但是第二个不是应该不会用到吗??
%开头的模糊查询,会导致全表扫描
像like 'me%' 这个百分号之前还是有用到索引的 匹配开头两个字母命中的这些数据用到 KEY `area_name` (`area_code`,`node_name`(255)
这个索引
like '%me%' 这个 条件不能使用到索引 但是 你这个条件之前的 area_code=10 是可以用 KEY `area_name` (`area_code`,`node_name`(255) 索引的
可以用啊,只要%不在字段前面就可以的