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

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

然后,我为长度小于20的随机列标题插入了1,000,000行数据。

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


    使用EXPLAIN来查看MySQL如何处理查询,它可能会给你一个线索。

    另外,尝试一些其他字符。 也许MySQL错误地将其中的一个解释为具有百分号。


    “快”与“中”的“远”究竟是多少?

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

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

    链接地址: http://www.djcxy.com/p/10959.html

    上一篇: a funny case for mysql query " like 'xx' "

    下一篇: How can I hunt down these OpenGL calls that are distorting objects in my scene?