mssql 表类型简介


表类型简介

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 很多列时,索引列无法全部包含列信息时,可通过聚集索引查找,返回指定行信息,避免了全表扫描,加快了系统查询速度