喜欢%或反对FULLTEXT搜索吗?

时间:2016-07-26 12:34:43

标签: mysql sql

我试图做一个非常快的&使用关键字作为搜索来获取记录的有效方法。

我们的MYSQL表 MASTER 表包含30,000行,并有4个字段。

  • ID
  • 标题( FULLTEXT
  • short_descr( FULLTEXT
  • long_descr( FULLTEXT

任何人都可以建议哪一个更有效率?

  • LIKE%
  • MYSQL 反对

如果有人可以为关键字编写SQL查询,那将会很好  减肥秘诀

SELECT id FROM MASTER
WHERE (title LIKE '%Weight Loss Secrets%' OR
       short_descr LIKE '%Weight Loss Secrets%' OR
       long_descr LIKE '%Weight Loss Secrets%')

提前致谢

1 个答案:

答案 0 :(得分:1)

FULLTEXT索引应该更快,将所有列添加到1个全文索引中可能是个好主意。

ALTER TABLE MASTER
ADD FULLTEXT INDEX `FullTextSearch` 
(`title` ASC, `short_descr` ASC, `long_descr` ASC);

然后使用IN BOOLEAN MODE

执行
 SELECT id FROM MASTER WHERE 
 MATCH (title, short_descr, long_descr) 
 AGAINST ('+Weight +Loss +Secrets' IN BOOLEAN MODE);

这将找到包含所有3个关键字的行。

但是,这不会让您完全匹配关键字只需要出现在同一行中。

如果你也想要完全匹配,你可以这样做,但它有点hacky并且只有在你的桌子没有变大的情况下才会起作用。

SELECT id FROM
(
SELECT CONCAT(title,' ',short_descr,' ', long_descr) AS SearchField 
FROM MASTER WHERE 
MATCH (title, short_descr, long_descr) 
AGAINST ('+Weight +Loss +Secrets' IN BOOLEAN MODE)
) result WHERE SearchField LIKE '%Weight Loss Secrets%'