提高LIKE子句的性能

Sky*_*ive 6 mysql sql

在过去的几天里,这一直是我的痛苦.我之前没有任何关于性能的知识就创建了数据库LIKE.我使用的查询是这样的,

SELECT  ....
FROM    .... JOINS ....
WHERE   tableA.col1 LIKE '%keyword%' OR
        tableB.col2 LIKE '%keyword%' OR
        tableC.col2 LIKE '%keyword%' OR
        .....
Run Code Online (Sandbox Code Playgroud)

当我测试查询时,它非常快,因为它上面只有大约100-150条记录.我想搜索包含关键字的任何字符串.几个月过去了,数据库变得庞大,包含50,000条记录.而这一次,我已经遇到了查询的低性能.它非常低.

有什么建议我可以改进吗?我不能改变数据库,因为它已经被公司使用过了.

顺便说一下,我的桌子都是INNODB.

Chr*_*man 1

这种类型的搜索称为全文搜索,您确实需要使用专门的系统,而不是强制数据库不断进行表扫描。您实质上将所有想要搜索的文本交给搜索引擎,然后搜索引擎将其编入索引以进行快速搜索。

一种选择是Apache Lucene