我试图做一个非常快的&使用关键字作为搜索来获取记录的有效方法。
我们的MYSQL表 MASTER 表包含30,000行,并有4个字段。
任何人都可以建议哪一个更有效率?
如果有人可以为关键字编写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%')
提前致谢
答案 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%'