在过去的几天里,这一直是我的痛苦.我之前没有任何关于性能的知识就创建了数据库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.
这种类型的搜索称为全文搜索,您确实需要使用专门的系统,而不是强制数据库不断进行表扫描。您实质上将所有想要搜索的文本交给搜索引擎,然后搜索引擎将其编入索引以进行快速搜索。
一种选择是Apache Lucene。
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |