为Mysql添加全文索引提高检索速度

您所在的位置:网站首页 MySQL创建索引慢 为Mysql添加全文索引提高检索速度

为Mysql添加全文索引提高检索速度

2024-06-04 10:20| 来源: 网络整理| 查看: 265

项目中的activemq消息都存在一个叫message_queue_history备份表里面。 经过压力测试后,测试环境的备份表message_queue_history有高达一千多万的记录。 消息记录在message列里面,测试人员每次是这样检索已发送消息的:

select * from message_queue_history where message like '%关键字%'

message 列上没有任何索引,效率可想而知。 另外提一句:

如果一名测试人员说mq消息没发送出去,那么这条mq一定是发送成功了。

本着偷偷折腾的精神(测试环境折腾坏了也不怕),尝试给message列加一个全文检索,提高查询速度。 一般做法是直接用alter语句,但这种做法会锁表,锁表期间message_queue_history无法插入。

ALTER TABLE message_queue_history ADD FULLTEXT INDEX idx_message (message);

知名Mysql工具集 Percona Toolkit 里面提供了一个不锁表添加索引的工具,语法如下,更多请参考官网:

pt-online-schema-change --execute --alter "ADD FULLTEXT INDEX 索引名 (列名)" D= t=表名,h=服务器地址,P=端口号,u=用户名,p=密码

添加索引后,这里以”10086”关键字为例,介绍两个实用的语法:

搜索关键字语法 MATCH(列名) AGAINST(‘关键字’)

SELECT * from message_queue_history where MATCH(message) AGAINST('10086');

关键字组合语法 MATCH(message) AGAINST(‘+关键字1 +关键字2’ IN BOOLEAN MODE) 搜手机号+其他关键字

SELECT * from message_queue_history where MATCH(message) AGAINST('+10086 +小明' IN BOOLEAN MODE);

更多花式用法 http://blog.csdn.net/zyz511919766/article/details/12780173



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3