关于Mysql 表建立索引

xuyanlu 2015-06-18 03:49:32

CREATE TABLE `e_from_list` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`pri_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '',
`timestamp` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '时间戳',
`from_name` varchar(200) NOT NULL DEFAULT '' COMMENT '',
`from_time` int(11) unsigned DEFAULT '0' COMMENT '',
`type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '类型',
PRIMARY KEY (`id`),
KEY `eid` (`pri_id`),
KEY `eidtime` (`pri_id`,`timestamp`),
KEY `eidtimefrom` (`pri_id`,`from_name`,`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=''


这是一张表,及这张表建立的索引。
现在有个关于索引建立的问题:
建立的三个索引里:第一个是pri_id的索引,第二个是pri_id与timestamp的联合索引,第三个是pri_id/from_name与timestamp的联合索引,而每个索引里都会有pri_id字段。

这几个组合的查询都是比较常用的。

这样建立索引是不是合理?有哪些好处及劣处?像这种应用场景怎么建立索引才能最优?
...全文
181 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu19774279 2015-06-19
  • 打赏
  • 举报
回复
根据MySQL索引的最左原则,KEY `eid` (`pri_id`)和其他索引重复,这个索引是完全没有必要的,
ACMAIN_CHM 2015-06-18
  • 打赏
  • 举报
回复
create index xxx on aa(`pri_id`,`timestamp`)
wwwwb 2015-06-18
  • 打赏
  • 举报
回复
可以建立 explain sql 看看执行计划 
xuyanlu 2015-06-18
  • 打赏
  • 举报
回复
引用 1 楼 wwwwb 的回复:
你的SQL语句是什么,要达到什么目的,经常执行的查询是什么
由于业务需要,查询的时候会经常需要`pri_id`,`from_name`,`timestamp` 这三个组合的条件 或`pri_id`,`timestamp`这两个的组合条件去查询,所以想知道 ,有没有必要给这两个组合建立联合索引~~
wwwwb 2015-06-18
  • 打赏
  • 举报
回复
你的SQL语句是什么,要达到什么目的,经常执行的查询是什么

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧