sql-server – HEAP表的有效使用方案是什么?

前端之家收集整理的这篇文章主要介绍了sql-server – HEAP表的有效使用方案是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在对遗留系统进行一些数据导入,并发现该系统不使用单个聚簇索引.一个快速的谷歌搜索向我介绍了HEAP表的概念,现在我很好奇在HEAP表应该优先于集群表的哪些使用场景?

据我所知,HEAP表仅对审计表有用和/或插入的发生频率远高于选择.它会节省磁盘空间和磁盘I / O,因为没有要维护的聚簇索引,并且由于非常罕见的读取,额外的碎片不会成为问题.

解决方法

唯一有效的用途是

>导入/导出/ ETL过程中使用的登台表.
>使用SELECT * INTO对表进行临时,临时和短期备份.

临时表通常非常扁平并且在使用之前/之后被截断.

请注意,与数据大小相比,聚簇索引通常很小:数据是索引结构的最低级别.

堆表也有问题.至少这些:

>无法进行碎片整理以减少磁盘空间.这很重要,因为使用的数据页将分散在整个MDF中,例如,因为数据没有来自聚簇索引的“顺序”
>非聚集索引现在指向行,而不是聚集索引条目.这会影响性能Need for reaching data through clustered index with a non-clustered index

另见

> http://www.sqlbadpractices.com/heap-tables/(不良做法)
> http://msdn.microsoft.com/en-us/library/hh213609.aspx(MS的推荐)
> http://sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-(2930)-fixing-heap-fragmentation.aspx(Paul Randal的DBA神话)

猜你在找的MsSQL相关文章