天天看點

【資料庫】—索引簡介前言正文總結

前言

    無論什麼時候,隻要提到資料庫,都會說到索引,它是幹什麼的,一般怎麼來用,咱們一起來看一下。

正文

1、為什麼要建立索引?

  • 提高查詢速度
  • 利用索引的唯一性來控制記錄的唯一性

2、什麼是索引?

索引是對資料表中一個或多個字段的值進行排序的結構。資料庫索引就好比是一本書的目錄,根據目錄可以快速定位查找區域,進而快速找到搜尋項。

3、索引的種類

    根據索引對資料表中記錄順序的影響,索引可以分為聚集索引(clustered index)和非聚集索引(nonclustered index)。

  • 聚集索引(也叫聚簇索引)

        表資料按照索引的順序來存儲的,當在表中插入一行資料時,這行資料的存放的順序(實體順序)和建立索引的鍵值的邏輯順序相同。

    一個表隻能包含一個聚集索引。

  • 非聚集索引(也叫非聚簇索引)

        表資料存儲順序與索引順序無關,當在表中插入一行資料時,這行資料存放的順序(實體順序)在表的最後,不會影響資料表中原有的存儲順序。

    一個表中可以建立多個非聚集索引,一個表最多可以建立249個非聚集索引。

        根據其索引鍵值是否可重複,索引可分為唯一索引和普通索引。

  • 唯一索引

    要求建立索引的關鍵字段值在表中不能有重複值。

  • 普通索引

    普通索引允許被索引的資料列包含重複的值。

        根據其索引字段的組成情況,索引可分為單個索引和複合索引。

  • 基于多個字段的組合建立索引為複合索引,複合索引同時也可以是唯一索引。
  • 基于單個字段建立索引為單個索引。

    索引的基本操作

  • 建立索引
  • 修改索引
alter table table_name add index[索引的名字] (列的清單)
 --先删除
ALTER TABLE user
DROP INDEX idx_user_username;
--再以修改後的内容建立同名索引
CREATE INDEX idx_user_username ON user (username());
           
  • 建立表的時候指定索引
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
           

總結