主キーとインデックスキーの違いを教えてください。そして、いつ使用するのですか?
主キーは、次の特別な種類のインデックスです。
主キーを行の最も自然な一意の識別子として使用する傾向があります(社会保障番号、従業員IDなど。ただし、常に人工的な代理キーを使用する必要があると考えられています)。
一方、インデックスは、他の列に基づいた高速検索に使用できます。たとえば、従業員データベースには従業員番号が主キーとして含まれている場合がありますが、姓または部門のインデックスが含まれている場合もあります。
これらのインデックス(姓と部署)は両方ともNULL(おそらく)を許可せず、重複を許可し(ほぼ確実に)、姓が「Corleone」であるか、 「HitMan」部門。
キー(最小限のスーパーキー)は属性のセットであり、その値はすべてのタプル(ある時点でのテーブルのすべての行)に対して一意です。
インデックスは、データへの高速アクセスを可能にするパフォーマンス最適化機能です。
多くの場合、キーはインデックス作成に適した候補であり、一部のDBMSはキーのインデックスを自動的に作成しますが、そうする必要はありません。
「インデックスキー」というフレーズは、これら2つのまったく異なる単語を組み合わせたものであり、混乱を避けたい場合は避けるのが最善です。 「インデックスキー」は、「インデックス内の属性セット」を意味するために使用される場合があります。ただし、問題の属性のセットは必ずしも一意ではないため、必ずしもキーではありません。
他の応答は、プライマリキーを定義していますが、プライマリインデックスは定義していません。
プライマリインデックスは、プライマリキーのインデックスではありません。
プライマリインデックスはテーブルのデータ構造ですが、データ構造がプライマリキーによってorderedの場合のみです。したがって、プライマリキーによってレコードを検索するために別のデータ構造を必要とせずに効率的な検索が可能です。
すべてのデータベース(私が知っている)には主キーがあります。
すべてのデータベースにプライマリインデックスがあるわけではありません。デフォルトでは、主キーに副次索引を作成しないもののほとんど。