2017-12-06 8 views
4

this stackoverflow linkのような投稿は、PostgreSQLにクラスタ化されたインデックスの概念がないと主張しています。しかし、the PostgreSQL documentationには同様のものが含まれています。 SQL Serverのクラスタード・インデックスに似ていると主張する人がいます。PostgreSQLのCLUSTERとSQL Serverのクラスタ化インデックスとの違いは何ですか?

これらの2つの正確な相違点は何か分かりますか?

答えて

4

クラスタ化インデックス又は索引構成表は、すべてのテーブルデータは、典型的には、Bツリー構造のテーブルを編成することによって、インデックス順に編成されるデータ構造です。

テーブルがこのように構成されると、今後のすべてのデータ変更によって自動的にその注文が維持されます。

PostgreSQLには、このようなクラスタリングインデックスはありません。 CLUSTERコマンドが実行するコマンドは、インデックスの順番でテーブルを書き換えますが、テーブルは基本的には無秩序のままですヒープのデータであり、将来のデータ変更ではそのインデックスの順序は維持されません。

PostgreSQLのテーブルを定期的に更新する必要がある場合は、テーブルへのデータ変更に合わせてインデックスの順序を維持する必要があります。CLUSTER定期的に行う必要があります。

インデックススキャン中に見つかったタプルがヒープテーブル内で一緒になるため、ヒープへのランダムアクセスがより高速なシーケンシャルアクセスに変わる可能性があるため、PostgreSQLでクラスタリングするとパフォーマンスが向上します。

+0

SQL Serverでは、テーブルのすべての列はクラスタ化インデックスの一部です。それはここで同じですか?そうでない場合は、どのようにパフォーマンスを向上させるかをクラスタリングしますか? –

+0

PostgreSQLの 'CLUSTER'は、テーブルが並べ替えられていることを除けば、以前と同じような新しいテーブルと新しいインデックスになります。パフォーマンスの優位性を説明するために私の答えを広げました。 –

関連する問題