Board logo

标题: [电脑] 问个mysql数据库相关问题 [打印本页]

作者: overall    时间: 2021-12-20 13:45     标题: 问个mysql数据库相关问题

办公室书报借阅系统需要优化,某张表容量大小10G左右,其中主要字段是summary,类型是mediumtext,内容是大段的utf8格式汉字书报简介。
现在关键字搜索用的是like '%xxx%',查一次要跑15min+,请问如何在软件层面优化能使全文搜索大幅减小检索时间?

[ 本帖最后由 overall 于 2021-12-20 13:46 编辑 ]
作者: sceic    时间: 2021-12-20 13:50

把频繁查询的内容推到缓存上去
作者: ffcactus    时间: 2021-12-20 14:03

posted by wap, platform: iPhone
如果是用PostgreSQL可以考虑新增tsvector列,专门处理这种情况。
但是估计My SQL没有此类功能。
作者: ffcactus    时间: 2021-12-20 14:06

posted by wap, platform: iPhone
查了一下MySQL有 Full-Text Search Functions
作者: mting    时间: 2021-12-20 14:38

like '%xxx%' 这样 index就么用了
试试
like 'xxx%'

第二就是折腾一次把mediumtext的field 做一个fulltext index

如果对搜索要求很高 要来回搜
还有个办法是mysql前面家一个专门的搜索引擎 elasticsearch 然后app 和elastic叫流
作者: STR_ERR    时间: 2021-12-20 16:00

es ,mysql 异构到es里。找一个定时任务,定时同步就行。
作者: huey    时间: 2021-12-20 21:55

posted by wap, platform: VIVO
搞个sphinx全文索引引擎啊。秒搜
作者: yaoyuef    时间: 2021-12-20 23:21

posted by wap, platform: iPhone
mysql大概5.7.x后的某个版本开始支持中文的fulltext索引,但如果使用频率高长远来说还是得上es
作者: 梦飘零    时间: 2021-12-21 00:10

posted by wap, platform: Android
使用canal之类的工具将mysql数据实时同步至es中,之后使用es检索。
作者: LTFYH    时间: 2021-12-21 07:29

posted by wap, platform: VIVO
数据量和并发大的话,还是用es做全文检索引擎吧。




欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) Powered by Discuz! 6.0.0