mysql的show index和optimize

今天复习了MYSQL中的show index和optimize,在mysql中,观察索引的用法如下:
mysql> SHOW INDEX FROM mytable FROM mydb; 
mysql> SHOW INDEX FROM mydb.mytable; 

出来的列含义如下:
Table

表的名称。

Non_unique

如果索引不能包括重复词,则为0。如果可以,则为1。

Key_name

索引的名称。

Seq_in_index

索引中的列序列号,从1开始。

Column_name

列名称。

Collation

列以什么方式存储在索引中。在MySQLSHOW INDEX语法中,有值’A’(升序)或NULL(无分类)。

Cardinality

索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。

Sub_part

如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。

Packed

指示关键字如何被压缩。如果没有被压缩,则为NULL。

Null

如果列含有NULL,则含有YES。如果没有,则该列含有NO。

Index_type

用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。

2 可以用optimize进行优化
  optimize table tbl_name;

 中文手册中的论述如下,对optimize:
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR, BLOB或TEXT列的表)进行了很多更改,则应使用
OPTIMIZE TABLE。被删除的记录被保持在链接清单中,后续的INSERT操作会重新使用旧的记录位置。您可以使用OPTIMIZE TABLE来重新
利用未使用的空间,并整理数据文件的碎片。

在多数的设置中,您根本不需要运行OPTIMIZE TABLE。即使您对可变长度的行进行了大量的更新,您也不需要经常运行,每周一次或每月一次
即可,只对特定的表运行。

OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。

注意,在OPTIMIZE TABLE运行过程中,MySQL会锁定表。


你可能感兴趣的:(mysql)