this stackoverflow linkのような投稿は、PostgreSQLにクラスタ化されたインデックスの概念がないと主張しています。しかし、the PostgreSQL documentationには同様のものが含まれています。 SQL Serverのクラスタード・インデックスに似ていると主張する人がいます。PostgreSQLのCLUSTERとSQL Serverのクラスタ化インデックスとの違いは何ですか?
これらの2つの正確な相違点は何か分かりますか?
this stackoverflow linkのような投稿は、PostgreSQLにクラスタ化されたインデックスの概念がないと主張しています。しかし、the PostgreSQL documentationには同様のものが含まれています。 SQL Serverのクラスタード・インデックスに似ていると主張する人がいます。PostgreSQLのCLUSTERとSQL Serverのクラスタ化インデックスとの違いは何ですか?
これらの2つの正確な相違点は何か分かりますか?
クラスタ化インデックス又は索引構成表は、すべてのテーブルデータは、典型的には、Bツリー構造のテーブルを編成することによって、インデックス順に編成されるデータ構造です。
テーブルがこのように構成されると、今後のすべてのデータ変更によって自動的にその注文が維持されます。
PostgreSQLには、このようなクラスタリングインデックスはありません。 CLUSTER
コマンドが実行するコマンドは、インデックスの順番でテーブルを書き換えますが、テーブルは基本的には無秩序のままですヒープのデータであり、将来のデータ変更ではそのインデックスの順序は維持されません。
PostgreSQLのテーブルを定期的に更新する必要がある場合は、テーブルへのデータ変更に合わせてインデックスの順序を維持する必要があります。CLUSTER
定期的に行う必要があります。
インデックススキャン中に見つかったタプルがヒープテーブル内で一緒になるため、ヒープへのランダムアクセスがより高速なシーケンシャルアクセスに変わる可能性があるため、PostgreSQLでクラスタリングするとパフォーマンスが向上します。
SQL Serverでは、テーブルのすべての列はクラスタ化インデックスの一部です。それはここで同じですか?そうでない場合は、どのようにパフォーマンスを向上させるかをクラスタリングしますか? –
PostgreSQLの 'CLUSTER'は、テーブルが並べ替えられていることを除けば、以前と同じような新しいテーブルと新しいインデックスになります。パフォーマンスの優位性を説明するために私の答えを広げました。 –