MySQL - 叢集索引



MySQL 中的索引用於從資料庫中更快地檢索資料。我們(使用者)看不到索引,但它們在後臺工作以加快搜索和查詢速度。它們分為兩種型別:聚集索引和非聚集索引。

聚集索引可以手動對錶中的資料進行排序。當資料插入到具有聚集索引的列中時,記錄會自動按指定的順序排序。因此,每個表只能有一個聚集索引,因為它決定了資料的排序順序。

MySQL 叢集索引

MySQL 資料庫沒有為叢集索引提供單獨的規定。當在表上定義 PRIMARY KEY 時,它們會自動建立。當未定義 PRIMARY KEY 時,第一個 UNIQUE NOT NULL 鍵將被視為叢集索引。

如果表沒有主鍵或唯一索引,MySQL 將在包含行 ID 值的列上內部建立一個名為GEN_CLUST_INDEX的隱藏叢集索引。

表的行使用 InnoDB 生成的行 ID 值進行排序。

示例

讓我們使用以下查詢建立一個名為CUSTOMERS的表:

CREATE TABLE CUSTOMERS(
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE  INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (20, 2),
   PRIMARY KEY(ID)
);

現在,我們將使用 INSERT 語句將一些值插入到上面建立的表中:

INSERT INTO CUSTOMERS VALUES 
(1, 'Ramesh', '32', 'Ahmedabad', 2000),
(2, 'Khilan', '25', 'Delhi', 1500),
(3, 'Kaushik', '23', 'Kota', 2500),
(4, 'Chaitali', '26', 'Mumbai', 6500),
(5, 'Hardik','27', 'Bhopal', 8500),
(6, 'Komal', '22', 'MP', 9000),
(7, 'Muffy', '24', 'Indore', 5500);

表將如下建立:

ID 姓名 年齡 地址 工資
1 Ramesh 32 艾哈邁達巴德 2000.00
2 Khilan 25 德里 1500.00
3 Kaushik 23 科塔 2000.00
4 Chaitali 25 孟買 6500.00
5 Hardik 27 博帕爾 8500.00
6 Komal 22 海得拉巴 4500.00
7 Muffy 24 因多爾 10000.00

使用以下查詢,我們可以列出在 CUSTOMERS 表上建立的所有索引:

SHOW INDEX FROM CUSTOMERS\G

輸出

如下面的輸出所示,PRIMARY KEY 在 CUSTOMERS 表的 ID 列上建立。

*************************** 1. row ***************************
        Table: customers
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: ID
    Collation: A
  Cardinality: 7
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
1 row in set (0.01 sec)
廣告