Mysql 简明教程
MySQL - Clustered Index
MySQL 中的索引用于更快从数据库中检索数据。我们(用户)无法看到索引,但它们会在后台加速搜索和查询。它们分为两类:聚集索引和非聚集索引。
聚集索引可以手动对表中的数据进行排序。当数据被插入到具有聚集索引的列中时,记录会按指定顺序自动排序。因此,每个表只能有一个聚集索引,因为它决定了数据的排序顺序。
MySQL Clustered Indexes
MySQL 数据库没有针对聚集索引的单独设置。当表上定义了主键时,它们会自动创建。当未定义主键时,第一个唯一键非空值被视为聚集索引。
如果表没有主键或唯一索引,MySQL 将在包含行 ID 值的列上内部创建一个名为 GEN_CLUST_INDEX 的隐藏聚集索引。
Example
让我们使用以下查询创建一个名为 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);
该表将按如下方式创建:
使用以下查询,我们可以列出在 CUSTOMERS 表上创建的所有索引 -
SHOW INDEX FROM CUSTOMERS\G
Output
正如我们在下面的输出中看到的那样,主键是在 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)