【发布时间】:2011-12-11 23:23:51
【问题描述】:
我有一个查询速度太慢了几倍,但我怀疑如果我知道如何正确索引它可以大大改进。我有两个要连接的表和一个 WHERE 子句,它对一个表的字段进行日期比较,对另一个表的字段进行 REGEXP。
SELECT * FROM tbl1 INNER JOIN tbl2 ON tbl1.id=tbl2.id
WHERE tbl1.date_time > now() AND tbl2.name REGEXP '[[:<:]]search[[:>:]]'
日期已编入索引,但正则表达式的字符串不是因为该表中有很多插入,而且我担心索引字符串会随着索引的更新而减慢插入速度。目标是查找给定单词(本例中为“搜索”)何时出现在文本中。我也没有做全文索引,因为当只有几个不同的词 ~2000 会像这样被搜索时,这似乎是一种浪费。如果有更好的方法来完成此过程,我们将不胜感激。
【问题讨论】:
-
你能告诉我们你的表结构吗?此外,在
WHERE子句中添加更多表达式以缩小结果范围可能会有所帮助。
标签: mysql performance full-text-search indexing