表类型简介
mssql sql server数据库中,表类型分为
(聚集索引表和堆表)
聚集索引表:存在聚集索引的表,都称之为聚集索引表.
堆表:只要没有聚集索引,都称之为 堆表,(包括非聚集索引表)。
如何查看表类型
根据上面表类型简介,我们可以通过查看表是否包含聚集索引来判定表类型,具体脚本如下所示:
方法一:通过查询系统视图中的索引方式来鉴定表类型,脚本如下所示:
SELECT
OBJECT_NAME(a.object_id) [表名]
,CASE a.index_id
WHEN 0 THEN '堆表'
WHEN 1 THEN '聚集索引表'
END [表类型]
FROM sys.partitions a
right join sys.tables b on a.object_id = b.object_id and b.type='u'
WHERE a.index_id < 2
GROUP BY a.object_id,a.index_id
方式二:通过查询系统索引表中的索引类型,关联出相关表信息,来判定是否为堆表
SELECT
OBJECT_NAME(a.object_id) as [表名],
case a.type_desc
when 'CLUSTERED' then '聚集索引表'
when 'HEAP' then '堆表'
else '' end as [表类型]
FROM sys.indexes a
right join sys.tables b on a.object_id= b.object_id and b.type='u'
WHERE index_id <2
各种表类型的应用场景
选择堆表的原因:
1 堆表无聚集索引,可减少磁盘空间占用 优点
2 堆表无聚集索引,无排序要求,数据插入快 优点
选择聚集索引表的原因:
1 数据存在排序,可减少某些特定字段的排序操作
2 当select 很多列时,索引列无法全部包含列信息时,可通过聚集索引查找,返回指定行信息,避免了全表扫描,加快了系统查询速度