今天线上mysql告警日志针对BBS点赞记录表发出了多次通知,提示没有添加索引。单表数据20w+,查询结果有做缓存处理,每查一次DB进行一次全表扫描,数据越多的情况下,查询效率越慢,超过了0.1m。添加索引之后,效率明显提升。之前对这块没过多关注, 想想就用实际的数据来测试一下吧。
线上的慢sql为
SELECT `cid` FROM `bbs_test` WHERE `origin` = 1 AND `user_id` = ? AND `cid` IN (?);
一. 建立表结构 — 用户点赞记录表
CREATE TABLE `bbs_test` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键,自动增长',
`user_id` varchar(32) DEFAULT NULL COMMENT '用户UID',
`origin` tinyint(4) DEFAULT '0' COMMENT '1帖子 2回复',
`cid` int(11) DEFAULT NULL COMMENT '帖子ID 评论ID',
`count` int(11) DEFAULT '0' COMMENT '计数',
`type` tinyint(4) DEFAULT NULL COMMENT '1点赞2分享3收藏',
`gmt_create` datetime DEFAULT NULL COMMENT '添加时间',
`version` tinyint(4) D