MySQL SHOW INDEX语法是什么意思

56次阅读
没有评论

共计 2563 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章主要介绍“MySQL SHOW INDEX 语法是什么意思”,在日常操作中,相信很多人在 MySQL SHOW INDEX 语法是什么意思问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL SHOW INDEX 语法是什么意思”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

如:show index from `order`

1、Table  表名

2、Non_unique  如果索引不能包括重复值则为 0,如果可以则为 1。也就是平时所说的唯一索引。

3、Key_name  索引名称,如果名字相同则表明是同一个索引,而并不是重复,比如上图中的第二、三条数据,索引名称都是 index_fID_lastTime,其实是一个联合索引。

4、Seq_in_index 索引中的列序列号,从 1 开始。上图中的二、三条数据,Seq_in_index 一个是 1 一个是 2,就是表明在联合索引中的顺序,我们就能推断出联合索引中索引的前后顺序。

5、Column_name 索引的列名。

6、Collation  列以什么方式存储在索引中,大概意思就是字符序。在 MySQLSHOW INDEX 语法中,有值’A’(升序)或 NULL(无分类)。默认的类型是 utf8_general_ci,这样的大小写不敏感,比如下面两个 sql 会出现相同的查询结果:

  select * from Table where content = Yes
  select * from Table where content = yes

  这样可能不符合你的要求,你需要大小写敏感的情况,你可以修改字段字符集类型,如下 sql

  alter table bbs_posts modify column content varchar(5000) NOT NULL collate utf8_bin;

  这样修改以后就 OK 了。

7、Cardinality  基数的意思,表示索引中唯一值的数目的估计值。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL 使用该索引的机会就越大。我们知道某个字段的重复值越少越适合建索引,所以我们一般都是根据 Cardinality 来判断索引是否具有高选择性,如果这个值非常小,那就需要重新评估这个字段是否适合建立索引。因为 MySQL 数据库中有各种不同的存储引擎,而每种存储引擎对于 B + 树索引的实现又各不相同。所以对 Cardinality 统计时放在存储引擎层进行的,至于它是如何统计更新的在这里就不再做更深入的介绍了。

8、Sub_part  前置索引的意思,如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为 NULL。如上图所示,除了 index_content 那行显示 4 外,其他的都是 NULL,表明 index_content 是一个长度为 4 的前置索引。对于 BLOB,TEXT,或者很长的 VARCHAR 类型的列,必须使用前缀索引,因为 MySQL 不允许索引这些列的完整长度,这会让索引变得大且慢。选择长度的诀窍在于要选择足够长的前缀以保证较高的选择性,同时又不能太长以便节约空间。下面是计算前置索引长度的一般方法: 

  select count(distinct left(content,3))/count(*) from bbs_posts as sel3

  select count(distinct left(content,4))/count(*) from bbs_posts as sel4

  select count(distinct left(content,5))/count(*) from bbs_posts as sel5

  最后算出来那个长度的基数接近完整列的选择行就 OK 了,完整列 select count(distinct content)/count(*) from bbs_posts

9、Packed  指示关键字如何被压缩。如果没有被压缩,则为 NULL。压缩一般包括压缩传输协议、压缩列解决方案和压缩表解决方案。

10、Null 如果列含有 NULL,则含有 YES。比如上图中的 lastOperateTime 其中就包含 null,我们知道建立索引的列是不允许为 Null 的,单列索引不存 Null 值,复合索引不存全为 Null 的值,如果列允许为 Null,可能会得到“不符合预期”的结果集。我这里是为了更好的给大家展示故意构造了一些数据。

11、Index_type  索引类型,Mysql 目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。 

  1). FULLTEXT
    即为全文索引,目前只有 MyISAM 引擎支持。其可以在 CREATE TABLE,ALTER TABLE,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR,TEXT 列上可以创建全文索引。全文索引并不是和 MyISAM 一起诞生的,它的出现是为了解决 WHERE name LIKE“%word% 这类针对文本的模糊查询效率较低的问题。
   2). HASH
    由于 HASH 的唯一(几乎 100% 的唯一)及类似键值对的形式,很适合作为索引。   HASH 索引可以一次定位,不需要像树形索引那样逐层查找, 因此具有极高的效率。但是,这种高效是有条件的,即只在“=”和“in”条件下高效,对于范围查询、排序及组合索引仍然效率不高。
   3). BTREE   BTREE 索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口 root 开始,依次遍历 node,获取 leaf。这是 MySQL 里默认和最常用的索引类型。
   4). RTREE
   RTREE 在 MySQL 很少使用,仅支持 geometry 数据类型,支持该类型的存储引擎只有 MyISAM、BDb、InnoDb、NDb、Archive 几种。相对于 BTREE,RTREE 的优势在于范围查找。

12、Comment Index_comment  注释的意思。

到此,关于“MySQL SHOW INDEX 语法是什么意思”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计2563字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)