2

Oracle では、テーブル クラスタは、共通の列を共有し、関連するデータを同じブロックに格納するテーブルのグループです。テーブルがクラスター化されている場合、1 つのデータ ブロックに複数のテーブルの行を含めることができます。たとえば、ブロックは、1 つのテーブルだけではなく、employees テーブルと departments テーブルの両方からの行を格納できます。

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

これは SQLServer で実行できますか?

4

2 に答える 2

1

一方では、これはビューに非常によく似ています。データはテーブルに格納され、ビューは、ビューの定義で指定されたテーブル内の列のみへのアクセスを提供します。(したがって、「共通の列」です。)

一方、これはデータベースエンジンがデータをハードドライブに保存する方法のように聞こえます。SQLでは、これは8kbページを介して行われます。2つの完全に別個のテーブル定義を想定すると、同じページに2つのそのような別個のテーブルからのデータを格納する方法はありません。(OracleブロックがOSファイルのラインに沿っている場合、それはSQLファイルとファイルグループに変わります。その時点で答えは「はい」です...しかし、これはブロックの内容ではないと思います。)

于 2010-05-28T21:36:16.397 に答える
1

私がここで読んでいるものに基づいていません。SQL Server では、各テーブルのページは他のテーブルのページから独立しています。

一方、各テーブルには、パフォーマンスに大きな影響を与えるクラスター化インデックスを選択できます。さらに、パーティションは実行計画に影響を与えると思います。両方のテーブルに同様のパーティション関数がある場合、パフォーマンスが向上する可能性がありますが、パーティション分割の通常の目的はパフォーマンス上の理由ではありません。

通常、JOINS の最適化にはインデックス戦略が含まれます (私の経験では、クラスター化されていないインデックスをカバーすることが望ましい)

于 2010-05-28T23:14:25.487 に答える