一个滑稽的案例为mysql查询“喜欢'xx'”
问题描述:
我发现一个有趣的案例在MySQL查询SQL与前缀字符串匹配;一个滑稽的案例为mysql查询“喜欢'xx'”
我创建了这样的表;
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个SQLS这样的:
- SQL#1:
select * from EpgInfo2 where title like "快" limit 1;
- SQL#2:
select * from EpgInfo2 where title = "中" limit 1;
- SQL#3:
select * from EpgInfo2 where title like "中" limit 1;
而且我发现:
- SQL#1成本0.2S。
- SQL#2和SQL#3的成本为0.0s。 我用
%handl%
的显示状态来创建查询计划,我发现SQL#1扫描所有索引数据,SQL#2和SQL#3没有。
为什么?
答
表中“远”与“中”之间的距离是多少?
如果“中”是第一行看,那么只需要查看一行就可以查看第二个和第三个查询。
如果另一个是最后一行,则需要扫描整个表格。
答
使用EXPLAIN
来看看MySQL如何处理查询,它可能会给你一个线索。
另外,尝试一些其他字符。也许MySQL错误地将其中的一个解释为具有百分号。
这3个sqls在我的数据中都没有结果 – user1010434 2012-07-09 03:24:47