一个有趣的案例,对于mysql查询“喜欢'xx'”

时间:2012-07-08 15:27:22

标签: mysql sql

我在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:

  • 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.2秒。
  • SQL#2和SQL#3的成本为0.0s。 我使用显示状态如%handl%来创建查询计划,我发现SQL#1扫描所有索引数据,SQL#2和SQL#3没有。

为什么吗

2 个答案:

答案 0 :(得分:2)

使用EXPLAIN查看MySQL如何处理查询,它可能会为您提供线索。

另外,尝试其他一些角色。也许MySQL错误解释其中一个有百分号。

答案 1 :(得分:1)

表中“远”与“中”的对比程度如何?

如果“中”是第一行,那么第二和第三个查询只需要查看一行。

如果另一行是最后一行,则需要扫描整个表格。