我有一个查询,它只是慢了几倍,但我怀疑,如果我知道如何正确地对它进行索引,可以大大提高它的性能。我有两个被连接的表和一个WHERE子句,它们对一个表中的字段进行日期比较,对另一个表中的字段进行REGEXP比较。
SELECT * FROM tbl1 INNER JOIN tbl2 ON tbl1.id=tbl2.id
WHERE tbl1.date_time > now() AND tbl2.name REGEXP '[[:<:]]search[[:>:]]' 日期是有索引的,但是得到regexped的字符串不是,因为有很多插入到该表中,我担心索引字符串会在索引更新时减慢插入速度。目标是找出给定的单词(本例中为“search”)何时出现在文本中。我也没有做全文索引,因为当只有几个不同的词~2000可以像这样搜索时,这似乎是一种浪费。如果有更好的方法来完成这个过程,任何帮助都将不胜感激。
发布于 2012-03-04 03:05:24
因此,我想出的解决方案是在脱机脚本中进行处理并保存结果,而不是实际执行全文索引。我没有运行这个有时很慢的正则表达式,而是构建了一个类似trie的结构,它包含了其中所有可能的搜索值,当给定时,文本可以通过查找来区分哪些值非常快。
https://stackoverflow.com/questions/8468352
复制相似问题