Rlike MariaDB查询速度慢

时间:2018-03-10 20:35:02

标签: mysql sql performance mariadb

我有一个查询,我对结果感到满意但不是查询的性能,我想从文本中选择一些单词(不允许部分单词)(即我想选择:" dog&# 34;不是"狗")

SELECT name FROM texts WHERE name rlike '[[:<:]]text[[:>:]]' LIMIT 0, 50;

我已使用&#34;类似于&#39;%text%&#39;来测试相同的选择&#34;更快,但不能正确选择字边界作为&#34;文本。&#34; (以。结尾)或者!,开始这句话,......有太多的可能性......

有什么方法可以用相同的结果改进/修改我的查询吗?

由于

1 个答案:

答案 0 :(得分:0)

WHERE MATCH(name) AGAINST('well-known' IN BOOLEAN MODE)
  AND RLIKE '[[:<:]]well-known[[:>:]]'

FULLTEXTLIKE快; LIKERLIKE快。

问题在于FULLTEXT的例外(简短词,停用词等)。如果可行,请让您的应用查看搜索字词以决定执行此FULLTEXT AND技巧或使用保罗的LIKE AND技巧。

迟缓的原因...在原始查询中(仅RLIKE),必须读取每一行,并且必须扫描每个name以查找&#34;文本&#34;。

FULLTEXT更快(可能更快),因为它可以使用索引直接使用&#34; text&#34;行。

LIKERLIKE快,因为算法不太复杂。 (但它仍然必须每name获取一次。)