Mysql如何查看表的索引
作者:Web3&Basketball
Mysql查看表的索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
上面都在说使用索引的好处,但过多的使用索引将会造成滥用。
因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。
因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
建立索引会占用磁盘空间的索引文件。
索引优缺点
优点
1.大大加快数据的检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.加速表和表之间的连接;
4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
缺点
1.索引需要占物理空间。
2.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
查看表的索引:
show index from table_name(表名)
结果列表中各字段的含义:
.Non_unique
如果索引不能包括重复词,则为0。
如果可以,则为1。
.Key_name
索引的名称。
.Seq_in_index
索引中的列序列号,从1开始。
.Column_name
列名称。
.Collation
列以什么方式存储在索引中。
在MySQL中,有值‘A’(升序)或NULL(无分类)。
.Cardinality
索引中唯一值的数目的估计值。
通过运行ANALYZE TABLE或myisamchk -a可以更新。
基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。
基数越大,当进行联合时,MySQL使用该索引的机 会就越大。
.Sub_part
如果列只是被部分地编入索引,则为被编入索引的字符的数目。
如果整列被编入索引,则为NULL。
.Packed
指示关键字如何被压缩。
如果没有被压缩,则为NULL。
.Null
如果列含有NULL,则含有YES。
如果没有,则该列含有NO。
.Index_type
用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。