您的位置:首页 > 数据库 > MySQL

Mysql——index(索引)使用

2016-09-30 16:42 429 查看

索引作用

在索引列上可以有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。而在多表连接查询时,在执行连接时加快了与其他表中的行匹配的速度。索引可以避免排序,比如对order by 的字段建立索引,因为索引使用的是BTree(数据作为叶子节点在树的最底层已经排好序,这样方便了sql的between查询),本来就是排好序列的,所以可以避免排序达到优化查询的效果。

添加索引

ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。

ALTER TABLE table_name ADD INDEX index_name (column_list)
ALTER TABLE table_name ADD UNIQUE index_name (column_list)
ALTER TABLE table_name ADD PRIMARY KEY (column_list)


建立联合索引,各列之间用逗号分隔,联合索引(a,b,c)相当于(a),(a,b),(a,c)

删除索引

DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY


如果从表中删除了某列,则索引会受到影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。

查看索引

show index from table_name;


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

Seq_in_index
: 索引中的列序列号,从1开始。比如在组合索引中的位置

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)。

[参考资料]

MySQL索引的创建、删除和查看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: