面试题精选-聚集索引和非聚集索引
聚集索引和非聚集索引包括哪些
在Mysql中,聚集索引一般指的是主键。非聚集索引指的是辅助索引、二级索引。(在Mysql中,只有Innodb引擎支持聚集索引)
聚集索引和非聚集索引优缺点
- 查询速度上,聚集索引优于非聚集索引。
- 插入数据速度上,非聚集索引要比聚集索引要快。
聚集索引特点
- 一个表只能有一个聚集索引,通常是主键,但不一定就是主键。
- 聚集索引的数据行的物理存储顺序和索引的逻辑顺序是相同的。
- 聚集索引的叶子结点包含该行的所有信息。
非聚集索引特点
- 一个表的非聚集索引可能有多个。
- 非聚集索引的数据行的物理存储顺序和索引的逻辑顺序是不同的。
- 非聚集索引的叶子结点存在指向数据行的指针。
如何创建聚集索引与非聚集索引
SqlServer
若表设置主键,默认主键就是聚集索引,若想手动创建聚集索引,需要把主键去掉。
USE database_name;
GO
-- 创建聚集索引
CREATE CLUSTERED INDEX index_name
ON table_name (index_columns1,index_columns2, ...);
-- 创建非聚集索引
CREATE NONCLUSTERED INDEX index_name
ON table_name (index_columns1,index_columns2, ...);
Mysql
USE database_name;
GO
-- 创建聚集索引
CREATE CLUSTERED INDEX index_name
ON table_name (index_columns1, index_columns2, ...);
-- 创建非聚集索引(索引类型为Normal)
CREATE INDEX index_name ON table_name(index_columns1,index_columns2, ...);
人生如逆旅
我亦是行人

浙公网安备 33010602011771号