2011-12-11 117 views
0

我有一个查询只是几次太慢,但我怀疑可以大大提高,如果我知道如何正确索引它。我有两个表加入,一个WHERE子句对一个表中的字段和另一个字段上的REGEXP进行日期比较。文本搜索Mysql索引

SELECT * FROM tbl1 INNER JOIN tbl2 ON tbl1.id=tbl2.id 
WHERE tbl1.date_time > now() AND tbl2.name REGEXP '[[:<:]]search[[:>:]]' 

日期被索引,但其中获得regexped的字符串不是因为有大量插入到该表,我很害怕,索引字符串将减缓刀片,指数得到更新。目标是找出文本中给定单词(本例中为“搜索”)的时间。我也没有做一个全文索引,因为当只有几个不同的单词〜2000这样的搜索时,它看起来很浪费。如果有更好的方法来做这个过程,任何帮助将不胜感激。

+0

你能告诉我们你的表结构吗?另外,在你的'WHERE'子句中增加更多的表达式来缩小结果可能会有所帮助。 – Bojangles

回答

0

所以我提出的解决方案,而不是实际上做一个全文索引是在离线脚本中处理并保存结果。我没有运行这个有时慢的正则表达式,而是建立了一个类似trie的结构,它具有搜索所有可能的值,并且当给出文本可以通过查看哪些文件可以非常快速地查看时可以看出。