我目前正在对遗留系统进行一些数据导入,并发现该系统不使用单个聚簇索引.一个快速的谷歌搜索向我介绍了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神话)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。