在Oracle中,表群集是一组表,它们共享公共列并在相同的块中存储相关数据。当表被群集时,单个数据块可以包含来自多个表的行。例如,块可以存储来自employees和departments表的行,而不是仅存储一个表:
http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/tablecls.htm#i25478
可以在SQLServer中完成吗?
答案 0 :(得分:1)
一方面,这听起来非常像观点。数据存储在表中,并且视图仅提供对视图定义所指定的表中的那些列的访问。 (因此,你的“共同专栏”。)
另一方面,这听起来像数据库引擎如何存储硬盘驱动器的数据。在SQL中,这是通过8kb页面完成的。假设有两个完全独立的 table 定义,则无法在同一页面中存储来自两个此类不同表的数据。 (如果Oracle块更像是OS文件,那么它将转变为SQL文件和文件组,此时答案是“是”......但我怀疑这不是块的内容。)
答案 1 :(得分:1)
不是基于我reading here。在SQL Server中,每个表的页面都独立于其他表的页面。
另一方面,每个表都可以选择聚簇索引,这会极大地影响性能。另外,我认为分区会影响执行计划,如果两个表都有类似的分区函数,这可能会提高性能,但分区的正常目标不是出于性能原因。
通常,JOINS的优化涉及索引策略(根据我的经验,最好是覆盖非聚集索引)