【问题标题】:Table clusters in SQLServerSQL Server 中的表集群
【发布时间】:2011-02-25 07:46:55
【问题描述】:

在 Oracle 中,表簇是一组共享公共列并将相关数据存储在相同块中的表。当表被聚集在一起时,一个数据块可以包含来自多个表的行。例如,一个块可以同时存储employees 表和departments 表中的行,而不是只存储一个表中的行:

http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/tablecls.htm#i25478

这可以在 SQLServer 中完成吗?

【问题讨论】:

    标签: sql-server join denormalization


    【解决方案1】:

    一方面,这听起来很像视图。数据存储在表中,视图仅提供对表中由视图定义指定的列的访问。 (因此,您的“公共列”。)

    另一方面,这听起来像是数据库引擎在硬盘上存储数据的方式。在 SQL 中,这是通过 8kb 页面完成的。假设有两个完全独立的 table 定义,则无法在同一页面中存储来自两个这样不同的表的数据。 (如果一个 Oracle 块更符合 OS 文件,那么它会变成 SQL 文件和文件组,此时答案是“是”......但我怀疑这不是块的含义。)

    【讨论】:

      【解决方案2】:

      不是基于我reading here。在 SQL Server 中,每个表的页面都独立于其他表的页面。

      另一方面,每个表都可以选择聚集索引,这会极大地影响性能。另外,我相信分区会影响执行计划,如果两个表有相似的分区功能,这可能会提高性能,但分区的正常目标不是出于性能原因。

      通常,JOINS 的优化涉及索引策略(根据我的经验,最好覆盖非聚集索引)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多