我有一个查询只是几次太慢但我怀疑如果我知道如何正确索引它可以大大改善。我有两个连接的表和一个WHERE子句,它在一个表的字段和另一个字段的REGEXP上有日期比较。
SELECT * FROM tbl1 INNER JOIN tbl2 ON tbl1.id=tbl2.id
WHERE tbl1.date_time > now() AND tbl2.name REGEXP '[[:<:]]search[[:>:]]'
日期被编入索引但是获得regexped的字符串并不是因为该表中有很多插入,我担心索引字符串会在索引更新时减慢插入速度。目标是找到给定单词(在此示例中为“搜索”)何时在文本中。我也没有做全文索引,因为当只有几个不同的单词〜2000这样的搜索时,它似乎是一种浪费。如果有更好的方法来完成这个过程,我们将不胜感激。
答案 0 :(得分:0)
因此,我提出的解决方案是在离线脚本中进行处理而不是实际执行全文索引并保存结果。我没有运行这种有时速度慢的正则表达式,而是构建了一个类似于trie的结构,它具有搜索所有可能的值,并且当给定文本时可以通过查看哪些内容非常快来判断。