views:

22

answers:

2

In Oracle, a table cluster is a group of tables that share common columns and store related data in the same blocks. When tables are clustered, a single data block can contain rows from multiple tables. For example, a block can store rows from both the employees and departments tables rather than from only a single table:

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

Can this be done in SQLServer?

+1  A: 

On the one hand, this sounds very much like views. Data is stored in the table, and the views provide access to only those columns within the table specified by the view's definition. (Thus, your "common columns".)

On the other hand, this sounds like how the database engine stores data the hard drive. In SQL, this is done via 8kb pages. Assuming two completely separate table definitions, there is no way to store data from two such distinct tables in the same page. (If an Oracle block is more along the lines of OS files, then that turns into SQL Files and File Groups, at which point the answer is "yes"... but I suspect this is not what blocks are about.)

Philip Kelley
+1  A: 

Not based on what I am reading here. In SQL Server, each table's pages are independent of other tables' pages.

On the other hand, each table can have a choice of clustered index which can influence the performance greatly. In addition, I believe partitions will influence the execution plan and if both table have similar partition functions, this might boost performance, but the normal objective of partitioning is not for performance reasons.

Typically, optimization of JOINS involves index strategies (in my experience, preferably with covering non-clustered indexes)

Cade Roux