10

重複の可能性:
SQLServerの主キーと一意のクラスター化インデックスのパフォーマンスの違い

私はこのフォーラムを検索したことを確認しましたが、これまで誰もこの質問をしていなかったので、どこにも答えが見つかりませんでした。

私の質問は=「主キーとクラスター化インデックスの違いは何ですか?」です。

4

4 に答える 4

19

まず、1つはキーで、もう1つはインデックスです。

ほとんどのデータベース用語では、キーはデータを何らかの形で識別するものであり、データのストレージやパフォーマンスとは明確な関係はありません。また、主キーは、そのデータを一意に識別するデータです。

一方、インデックスは、データにアクセスするための(より高速な)方法を説明するものです。(一般的に)データの整合性と意味には関係せず、パフォーマンスとストレージに関係するだけです。特にSQLServerでは、クラスター化インデックスは、行のストレージの物理的な順序を指定するインデックスです。それが行うことは非常に複雑ですが、有用な概算は、行がクラスター化インデックスの値によって順序付けられていることです。つまり、order句を指定しない場合、データはクラスター化されたインデックスの値で並べ替えられる可能性があります。

ですから、それらは完全に異なるものであり、そのようなものは互いに補完し合っています。そのため、SQL Serverは、デザイナーを介して主キーを作成するときに、それと一緒に無料のクラスター化されたインデックスをスローします。

于 2013-01-08T11:01:14.910 に答える
6

主キーとクラスター化インデックスの違いを尋ねる前に、キーとインデックスが同じものではないことを知っておく必要があります。

キーは、主キーまたは外部キーにすることができます。テーブルごとに存在できる主キーは1つだけです(ただし、複数の列になる場合があります)。キーは論理的なものであり、ビジネスロジックを提供し、データの整合性を定義します。外部キーは、別のテーブルの主キーへの参照です。

インデックスは、選択した列への参照を構築するため、クエリを高速化するのに役立ちます。そのため、インデックス付きの列を使用するクエリに役立つ個別のファイルが作成されます。

クラスタ化されたインデックスは、テーブルの物理的な順序を定義する特別なインデックスです(シーケンシャルデータである必要があります)。

私は自分の言葉でこれを説明しようとしましたが、グーグル検索で必要なすべてのリソースを見つけることができます(そして私はあなたがこれをたくさん読むことを絶対にお勧めします!)

于 2013-01-08T11:08:56.367 に答える
4

主キーはレコードの一意の識別子です。このフィールドの独自の価値に責任があります。行を一意に識別するのは、単に既存のフィールドまたは特別に作成されたフィールドまたはフィールドのグループです。

また、クラスター化インデックスは、順序付けられたレコードにアクセスすることでデータ取得操作の速度を向上させるデータ構造です。インデックスは、テーブルの一部のコピーです。ハードディスク上で追加の物理的な場所を取ります。

于 2013-01-08T11:18:14.810 に答える
0

私の知る限り、RDBMSの多くでは、PKを作成すると、バックのエンジンがクラスター化されたインデックスを作成します。Entity integrityクラスター化されたインデックスがデータの順序を設定するときに使用され、パフォーマンスに使用されるPK 。

于 2013-01-08T11:11:11.717 に答える