需要建立这样的索引?

lshine 2013-10-12 05:10:42
这是discuz的一个表结构.
CREATE TABLE `pre_forum_thread` (
`tid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`fid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`posttableid` smallint(6) unsigned NOT NULL DEFAULT '0',
`typeid` smallint(6) unsigned NOT NULL DEFAULT '0',
`sortid` smallint(6) unsigned NOT NULL DEFAULT '0',
`readperm` tinyint(3) unsigned NOT NULL DEFAULT '0',
`price` smallint(6) NOT NULL DEFAULT '0',
`author` char(15) NOT NULL DEFAULT '',
`authorid` mediumint(8) unsigned NOT NULL DEFAULT '0',
`subject` char(80) NOT NULL DEFAULT '',
`dateline` int(10) unsigned NOT NULL DEFAULT '0',
`lastpost` int(10) unsigned NOT NULL DEFAULT '0',
`lastposter` char(15) NOT NULL DEFAULT '',
`views` int(10) unsigned NOT NULL DEFAULT '0',
`replies` mediumint(8) unsigned NOT NULL DEFAULT '0',
`displayorder` tinyint(1) NOT NULL DEFAULT '0',
`highlight` tinyint(1) NOT NULL DEFAULT '0',
`digest` tinyint(1) NOT NULL DEFAULT '0',
`rate` tinyint(1) NOT NULL DEFAULT '0',
`special` tinyint(1) NOT NULL DEFAULT '0',
`attachment` tinyint(1) NOT NULL DEFAULT '0',
`moderated` tinyint(1) NOT NULL DEFAULT '0',
`closed` mediumint(8) unsigned NOT NULL DEFAULT '0',
`stickreply` tinyint(1) unsigned NOT NULL DEFAULT '0',
`recommends` smallint(6) NOT NULL DEFAULT '0',
`recommend_add` smallint(6) NOT NULL DEFAULT '0',
`recommend_sub` smallint(6) NOT NULL DEFAULT '0',
`heats` int(10) unsigned NOT NULL DEFAULT '0',
`status` smallint(6) unsigned NOT NULL DEFAULT '0',
`isgroup` tinyint(1) NOT NULL DEFAULT '0',
`favtimes` mediumint(8) NOT NULL DEFAULT '0',
`sharetimes` mediumint(8) NOT NULL DEFAULT '0',
`stamp` tinyint(3) NOT NULL DEFAULT '-1',
`icon` tinyint(3) NOT NULL DEFAULT '-1',
`pushedaid` mediumint(8) NOT NULL DEFAULT '0',
`cover` smallint(6) NOT NULL DEFAULT '0',
`replycredit` smallint(6) NOT NULL DEFAULT '0',
`relatebytag` char(255) NOT NULL DEFAULT '0',
`maxposition` int(8) unsigned NOT NULL DEFAULT '0',
`bgcolor` char(8) NOT NULL DEFAULT '',
`comments` int(10) unsigned NOT NULL DEFAULT '0',
`hidden` smallint(6) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`tid`),
KEY `digest` (`digest`),
KEY `sortid` (`sortid`),
KEY `displayorder` (`fid`,`displayorder`,`lastpost`),
KEY `typeid` (`fid`,`typeid`,`displayorder`,`lastpost`),
KEY `recommends` (`recommends`),
KEY `heats` (`heats`),
KEY `authorid` (`authorid`),
KEY `isgroup` (`isgroup`,`lastpost`),
KEY `special` (`special`),
KEY `fid` (`fid`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=gbk


既然建立了typeid 这个索引. 为什么还需要 displayorder这个索引 目的是什么?
  KEY `displayorder` (`fid`,`displayorder`,`lastpost`),
KEY `typeid` (`fid`,`typeid`,`displayorder`,`lastpost`),
...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kobe8free 2013-10-13
  • 打赏
  • 举报
回复
KEY `displayorder` (`fid`,`displayorder`,`lastpost`), KEY `typeid` (`fid`,`typeid`,`displayorder`,`lastpost`), 如果索引 typeid 这个联合索引中的 ‘typeid’是放在最后的 即KEY `typeid` (`fid`,`displayorder`,`lastpost`,`typeid`) 那么 索引 displayorder 就可以不需要了 即如果索引 T (t1,t2,t3)可以把他理解为 (t1) (t1,t2) (t1,t2,t3) 这三种
ACMAIN_CHM 2013-10-13
  • 打赏
  • 举报
回复
KEY `typeid` (`fid`,`typeid`,`displayorder`,`lastpost`), select * from x where `fid`=1 and `typeid`=2 时会使用这个索引。
April_CH 2013-10-12
  • 打赏
  • 举报
回复
错了,displayorder并不是冗余索引,因为它并不是typeid索引的前缀~~~
April_CH 2013-10-12
  • 打赏
  • 举报
回复
displayorder没用吧还影响效率

56,677

社区成员

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

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