我不明白这个。
我有一个包含这些索引的表
PRIMARY post_id
INDEX topic_id
FULLTEXT post_text
Run Code Online (Sandbox Code Playgroud)
表有(仅)346 000 行。我正在尝试执行 2 个查询。
SELECT post_id
FROM phpbb_posts
WHERE topic_id = 144017
AND post_id != 155352
AND MATCH(post_text) AGAINST('http://rapidshare.com/files/5494794/photo.rar')
Run Code Online (Sandbox Code Playgroud)
需要 4.05 秒,而
SELECT post_id
FROM phpbb_posts
WHERE topic_id=144017
AND post_id != 155352
AND post_text LIKE ('%http://rapidshare.com/files/5494794/photo.rar%')
Run Code Online (Sandbox Code Playgroud)
需要 0.027 秒。
EXPLAIN 显示唯一的区别在于可能的键(fulltext
包含 post_text,LIKE
不包含)
这真的很奇怪。
这背后是什么?后台发生了什么?LIKE
不使用索引时怎么会这么快,而使用它的索引时 FULLTEXT怎么会这么慢?
实际上现在大约需要 0.5 秒,也许表被锁定了,但是,当我打开分析时,它显示 FULLTEXT INITIALIZATION 花了 0.2 秒。这是怎么回事?
我可以LIKE
每秒 10 倍的速度查询我的表格,而全文只有 2 倍
惊喜!
mysql> SELECT …
Run Code Online (Sandbox Code Playgroud)