mysql怎么查表的索引 mysql怎么查看表索引( 二 )


(3)需要查看全表
即把有索引的列全便利一遍
、 、 =、 =、 like、 between and 在范围扫描中,这些会受到B+tree索引叶子节点上额外的优化,因为这些是连续取值的
or、in 这两个不是连续的取值,所以不能受到B+tree索引的额外优化,使用时相当于Btree索引
!=、 not in 只有在主键列才走索引也是range级别
(1)、 、 =、 =、 like、 between and
(2)or、in
(3)!=、 not in
多表连接查询,非驱动表连接条件是主键或唯一键
一般多表查询的时,最左侧的表为驱动表,右侧的为非驱动表,下边的例子中country标为非驱动表
7.1.1 数字类型
7.1.2 字符串类型:
字符集
中文
gbk 2字节
utf8 3字节
utf8mb4 4字节
utf8mb4 为例:
举例(1)联合索引等值查询
举例(2) 联合索引中有不等值查询
如果Extra列出现Using temporary、Using filesort,两项内容,那么考虑以下语句的问题 。
group by
order by
distinct
join on
union
mysql怎么看索引状态SHOW INDEX FROM tbl_name [FROM db_name]
例如 , 
mysql SHOW INDEX FROM mytable FROM mydb;
mysql SHOW INDEX FROM mydb.mytable;
SHOW KEYS是SHOW INDEX的同义词 。您也可以使用mysqlshow -k db_name tbl_name命令列举一个表的索引 。
SHOW INNODB STATUS语法
SHOW INNODB STATUS
SHOW INDEX会返回表索引信息 。其格式与ODBC中的SQLStatistics调用相似 。
SHOW INDEX会返回以下字段:
· Table
表的名称 。
· 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) 。
· Comment
多种评注 。
如何查看MySQL索引查看索引
mysql show index from tblname;
mysql show keys from tblname;
· Table
表的名称 。
· 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 。

推荐阅读