SHOW INDEX查询MySQL表索引
SHOW INDEX通常用来查询表结构中的索引情况:
-- 表的结构 `login_total_2018`
--
CREATE TABLE `login_total_2018` (
`id` int(11) NOT NULL,
`tdate` date NOT NULL COMMENT '登录时间',
`agent_id` int(11) NOT NULL COMMENT '渠道ID',
`site_id` int(11) NOT NULL DEFAULT '0' COMMENT '广告位ID',
`cplaceid` varchar(50) DEFAULT NULL COMMENT '子ID',
`adid` varchar(20) DEFAULT NULL COMMENT '创意ID',
`turn` int(11) UNSIGNED NOT NULL COMMENT '轮数ID',
`login_count` int(11) NOT NULL COMMENT '账号数',
`active` int(11) UNSIGNED NOT NULL COMMENT '活跃天数(0:当天)',
`plat_id` int(11) UNSIGNED NOT NULL COMMENT '平台ID'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
存在以下索引:
--
-- Indexes for table `login_total_2018`
--
ALTER TABLE `login_total_2018`
ADD PRIMARY KEY (`id`),
ADD KEY `tdate` (`tdate`),
ADD KEY `agent_id` (`agent_id`),
ADD KEY `site_id` (`site_id`),
ADD KEY `plat_id` (`plat_id`),
ADD KEY `active` (`active`);
--
-- 使用表AUTO_INCREMENT `login_total_2018`
--
ALTER TABLE `login_total_2018`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
那么查询当前表的索引:
SHOW INDEX from `login_total_2018`
结果如下:
在mysql中的网站 http://dev.mysql.com/doc/refman/5.7/en/show-index.html 他是对下面的字段这样解释的
table : 表的名称
Non_unique : 如果该列索引中不包括重复的值则为0 否则为1
Key_name : 索引名称,如果是主键的话 则为PRIMARY
Seq_in_index : 索引中序列的序列号,从1开始,如果是组合索引 那么按照字段在建立索引时的顺序排列 如 ('c1', 'c2', 'c3') 那么 分别为 1, 2, 3
Column_name : 列的名称
Collation : 列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分序)
Cardinality : 索引中唯一值的数目的估计值,通过运行 ANALYZE TABLE or myisamchk -a 来更新,基数根据被存储为整数的统计数据来计数,所以对于小表该值没必要太过于精确,而对于大数据量的表来说,改值越大当进行联合时,MySQL使用该索引的机 会就越大。
Sub_part : 索引的长度,如果是部分被编入索引 则该值表示索引的长度 ,如果是整列被编入索引则为null,例如name_Index和school_Index 两个索引,比较一下上面两个索引创建时候的区别
Packed : 指示关键字如何被压缩。如果没有被压缩,则为NULL
Null : 如果该列的值有NULL,则是YES 否则为NO..
Index_type : 所用索引方法(BTREE, FULLTEXT, HASH, RTREE)
Commnet : 关于在其列中没有描述的索引的信息
Index_comment : 为索引创建时提供了一个注释属性的索引的任何评论