我在MySQL查询SQL中找到了一个有趣的案例,前缀字符串匹配;
我创建了这样的表格;
CREATE TABLE `EpgInfo` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(100) NULL NOT NULL DEFAUL '',
PRIMARY KEY (`id`),
KEY `title` (`title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
然后,我为随机列标题插入了1,000,000行数据,其长度小于20。
我使用3个这样的SQL:
select * from EpgInfo2 where title like "快" limit 1;
select * from EpgInfo2 where title = "中" limit 1;
select * from EpgInfo2 where title like "中" limit 1;
我发现:
%handl%
来创建查询计划,我发现SQL#1扫描所有索引数据,SQL#2和SQL#3没有。为什么吗
答案 0 :(得分:2)
使用EXPLAIN
查看MySQL如何处理查询,它可能会为您提供线索。
另外,尝试其他一些角色。也许MySQL错误解释其中一个有百分号。
答案 1 :(得分:1)
表中“远”与“中”的对比程度如何?
如果“中”是第一行,那么第二和第三个查询只需要查看一行。
如果另一行是最后一行,则需要扫描整个表格。