文本搜索Mysql索引

文本搜索Mysql索引,mysql,performance,full-text-search,indexing,Mysql,Performance,Full Text Search,Indexing,我有一个查询速度太慢了几倍,但我怀疑如果我知道如何正确索引它,它会有很大的改进。我有两个连接的表和一个WHERE子句,其中一个表的字段上有日期比较,另一个表的字段上有REGEXP SELECT * FROM tbl1 INNER JOIN tbl2 ON tbl1.id=tbl2.id WHERE tbl1.date_time > now() AND tbl2.name REGEXP '[[:<:]]search[[:>:]]' SELECT*FROM tbl1内部

我有一个查询速度太慢了几倍,但我怀疑如果我知道如何正确索引它,它会有很大的改进。我有两个连接的表和一个WHERE子句,其中一个表的字段上有日期比较,另一个表的字段上有REGEXP

SELECT * FROM tbl1 INNER JOIN tbl2 ON tbl1.id=tbl2.id 
 WHERE tbl1.date_time > now() AND tbl2.name REGEXP '[[:<:]]search[[:>:]]'   
SELECT*FROM tbl1内部连接tbl1.id=tbl2.id上的tbl2
其中tbl1.date_time>now()和tbl2.name REGEXP'[[::]]

日期是索引的,但得到regexped的字符串不是,因为有很多插入到该表中,我担心索引字符串会随着索引的更新而减慢插入速度。目标是查找给定单词(本例中的“搜索”)何时出现在文本中。我也没有做全文索引,因为当只有几个不同的单词~2000像这样被搜索时,这看起来像是浪费。如果有更好的方法来完成这个过程,任何帮助都将不胜感激。

因此,我提出的解决方案是在脱机脚本中进行处理并保存结果,而不是实际执行全文索引。我没有运行这个有时很慢的regexp,而是构建了一个类似于trie的结构,其中包含了所有可能的搜索值,当给定文本时,可以通过查找很快分辨出哪些文本。

您能给我们展示一下您的表结构吗?此外,在
WHERE
子句中添加更多表达式以缩小结果范围可能会有所帮助。