【数据库】—索引简介

前言

    无论什么时候,只要提到数据库,都会说到索引,它是干什么的,一般怎么来用,咱们一起来看一下。

正文

1、为什么要创建索引?

  • 提高查询速度
  • 利用索引的唯一性来控制记录的唯一性

2、什么是索引?

索引是对数据表中一个或多个字段的值进行排序的结构。数据库索引就好比是一本书的目录,根据目录可以快速定位查找区域,从而快速找到搜索项。

3、索引的种类

    根据索引对数据表中记录顺序的影响,索引可以分为聚集索引(clustered index)和非聚集索引(nonclustered index)。

  • 聚集索引(也叫聚簇索引)
        表数据按照索引的顺序来存储的,当在表中插入一行数据时,这行数据的存放的顺序(物理顺序)和建立索引的键值的逻辑顺序相同。
    一个表只能包含一个聚集索引。
  • 非聚集索引(也叫非聚簇索引)

        表数据存储顺序与索引顺序无关,当在表中插入一行数据时,这行数据存放的顺序(物理顺序)在表的最后,不会影响数据表中原有的存储顺序。
    一个表中可以创建多个非聚集索引,一个表最多可以创建249个非聚集索引。
        根据其索引键值是否可重复,索引可分为唯一索引和普通索引。

  • 唯一索引
    要求创建索引的关键字段值在表中不能有重复值。

  • 普通索引
    普通索引允许被索引的数据列包含重复的值。
        根据其索引字段的组成情况,索引可分为单个索引和复合索引。
  • 基于多个字段的组合创建索引为复合索引,复合索引同时也可以是唯一索引。
  • 基于单个字段创建索引为单个索引。

    索引的基本操作

  • 创建索引

create index <索引的名字> on table_name (列的列表)    
  • 修改索引
 alter table table_name add index[索引的名字] (列的列表)
 --先删除
ALTER TABLE user
DROP INDEX idx_user_username;
--再以修改后的内容创建同名索引
CREATE INDEX idx_user_username ON user (username(8));
  • 创建表的时候指定索引
create table table_name ( [...], INDEX [索引的名字] (列的列表) )
  • 删除索引
--删除指定表中指定名称的索引
ALTER TABLE table_name
DROP INDEX index_name;
  • 查看索引
--如果查看索引前,没有使用user db_name等命令指定具体的数据库,则必须加上FROM db_name
SHOW INDEX FROM table_name [FROM db_name]
--如果查看索引前,没有使用user db_name等命令指定具体的数据库,则必须加上db_name.前缀
SHOW INDEX FROM [db_name.]table_name

总结

猜你喜欢

转载自blog.csdn.net/zt15732625878/article/details/80472208