暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL之索引使用

原创 何权林 2020-05-15
514

一、为什么使用索引
使用索引就是为了提高数据的查询效率,类似于我们从小使用的字典。
在MySQL中,索引(index)也叫做“键(key)”,它是存储引擎用于快速找到记录的一种数据结构。

二、索引分类
分类方式一:
1、聚集索引:聚簇索引的数据的物理存放顺序与索引顺序是一致的,即:只要索引是相邻的,那么对应的数据一定也是相邻地存放在磁盘上的。该索引中键值的逻辑顺序决定了表中相应行的物理顺序。通常是主键。

2、非聚集索引:叶级页指向表中的记录,记录的物理顺序与逻辑顺序没有必然的联系。非聚簇索引则更像书的标准索引表,索引表中的顺序通常与实际的页码顺序是不一致的。如普通索引,唯一索引,联合索引,全文索引。

分类方式二:
实现原理
1、HASH索引
哈希索引用索引列的值计算该值的hashCode,然后在hashCode相应的位置存执该值所在行数据的物理位置,因为使用散列算法,因此访问速度非常快,但是一个值只能对应一个hashCode,而且是散列的分布方式,因此哈希索引不支持范围查找和排序的功能。

2、BTREE索引
就是一种将索引值按一定的算法,存入一个树形的数据结构中。

3、RTREE索引
RTREE在MySQL很少使用,仅支持geometry数据类型,支持该类型的存储引擎只有MyISAM、BDb、InnoDb、NDb、Archive几种。
相对于BTREE,RTREE的优势在于范围查找。

4、FULLTEXT
在生成FULLTEXT索引时,会为文本生成一份单词的清单,在索引时及根据这个单词的清单来索引。

分类方式三:
1、普通索引
最基本的索引,它没有任何限制。

2、唯一索引
与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。

3、主键索引
是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。

4、全文索引
主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。

5、组合索引
指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。
使用组合索引时遵循最左前缀集合.
例如创建了一个name, address的组合索引
select * from user where name = ‘xxx’ 此时,会走索引
select * from user where address = ‘xxx’ 则不会走索引

三、创建索引
1、CREATE TABLE时创建
CREATE TABLE table_name(id int primary key,name varchar(5) unique key);
或者
CREATE TABLE table_name(id int,name varchar(5), dd int,primary key (id),unique index (name),index (dd));

2、ALTER TABLE方式创建
ALTER TABLE table_name ADD INDEX index_name (column_list);
ALTER TABLE table_name ADD UNIQUE (column_list);
ALTER TABLE table_name ADD PRIMARY KEY (column_list);

3、CREATE INDEX方式创建
CREATE INDEX index_name ON table_name (column_list);
CREATE UNIQUE INDEX index_name ON table_name (column_list);
注:不能用CREATE INDEX语句创建PRIMARY KEY索引。
如果需要选择索引类型,需要添加using btree或者using hash,否则按默认选择。例:CREATE INDEX index_name ON table_name (column_list) using hash;

四、查询索引
mysql> show index from tblname;
mysql> show keys from tblname;

注:InnoDB、MyISAM引擎默认创建索引类型为Btree索引,MEMORY引擎默认创建的索引类型为hash索引。

五、删除索引
DROP INDEX index_name ON talbe_name;
ALTER TABLE table_name DROP INDEX index_name;
ALTER TABLE table_name DROP PRIMARY KEY;
注:前两条等价

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论