270

KEYPRIMARY KEYUNIQUE KEYおよびはいつ使用する必要がありINDEXますか?

4

8 に答える 8

327

KEYおよびINDEXはMySQLの同義語です。それらは同じことを意味します。データベースでは、インデックスを使用してデータ取得の速度を向上させます。インデックスは通常、、、および句で使用される列に作成さJOINWHEREますORDER BY

というテーブルがありusers、「Smith」という名前のすべてのユーザーを検索するとします。インデックスがないと、データベースはテーブルのすべてのレコードを調べる必要があります。データベースにあるレコードが多いほど、結果を見つけるために必要な作業が増えるため、これは低速です。一方、インデックスは、データベースが「Smith」レコードが保持されている関連ページにすばやくスキップするのに役立ちます。これは、私たち人間が電話帳のディレクトリを調べて名前で誰かを見つける方法と非常によく似ています。情報を可能な順序で挿入している限り、ディレクトリをカバーからカバーへと検索し始めません。 'S'ページにすばやくスキップするために使用します。

主キーと一意キーは似ています。主キーは、行を一意に識別できる列または列の組み合わせです。一意キーの特殊なケースです。テーブルには、最大で1つの主キーを含めることができますが、複数の一意のキーを含めることができます。列に一意のキーを指定する場合、テーブル内の2つの異なる行が同じ値を持つことはできません。

また、主キーまたは一意キーとして定義された列は、MySQLで自動的にインデックス付けされることに注意してください。

于 2010-10-02T08:13:11.507 に答える
64

KEYとINDEXは同義語です。

パフォーマンス測定値とEXPLAINが、インデックスがないためにクエリが非効率的であることを示した場合は、インデックスを追加する必要があります。インデックスを追加すると、クエリのパフォーマンスが向上する可能性があります(ただし、テーブルへの変更が遅くなる可能性があります)。

その列(または複数の列)の値を一意に制限する場合は、UNIQUEを使用する必要があります。これにより、重複する値を挿入しようとするとエラーが発生します。

PRIMARY KEYは一意性制約であり、列がNULLではないことも意味します。これは、各行にIDを与えるために使用されます。これは、外部キー制約を介して別のテーブルと結合する場合に役立ちます。テーブルに主キーが必要なわけではありませんが、通常はそれをお勧めします。

于 2010-10-02T08:09:38.240 に答える
52

主キーNULLは値を許可しませんが、一意のキーNULL値を許可します。

テーブルで宣言できる主キーは1 つだけ ですが、テーブルは複数の一意のキーを持つことができます(列の割り当て)。

于 2012-11-22T14:42:55.477 に答える
21

PRIMARY KEYANDUNIQUE KEYは、機能が異なることを除いて似ています。主キーは、テーブルの行を一意にします (つまり、まったく同じキーを持つ行が 2 つ存在することはありません)。データベース テーブルには主キーを 1 つだけ設定できます。

一意のキーは、テーブル行のテーブル列を一意にします (つまり、2 つのテーブル行がまったく同じ値を持つことはできません)。複数の一意のキー テーブル列を持つことができます (テーブル内の 1 つのテーブル列のみが一意であることを意味する主キーとは異なります)。

INDEX独自性も生み出します。MySQL (例) は、インデックスが作成された列のインデックス テーブルを作成します。このようにすると、そのインデックス付きテーブルの列に対してクエリが実行されたときに、テーブルの行の値を簡単に取得できます。欠点は、多くの更新/削除/作成を行う場合、MySQL がインデックス テーブルを管理する必要があることです (これがパフォーマンスのボトルネックになる可能性があります)。

お役に立てれば。

于 2010-10-02T08:26:11.360 に答える
11

一意のキー: 2 つの行が類似していない列

主キー: テーブル内のすべての行を一意に識別できる最小数の列のコレクション (つまり、主キーを構成するすべての列で類似する行はありません)。テーブルには複数の主キーが存在する場合があります。一意のキーが存在する場合、それはテーブルの主キー (「その」主キーではない) です。一意のキーが存在しない場合、(first_name、last_name、father_name、mother_name) のような行を識別するために複数の列の値が必要になり、一部のテーブルでは主キーを構成できます。

インデックス: クエリを最適化するために使用されます。ある列に基づいて結果を何度も検索またはソートする場合 (たとえば、ほとんどの人は生徒をロール番号ではなく名前で検索します)、列の値がすべて "たとえば、バイナリ ツリー アルゴリズムを使用します。

于 2010-10-02T08:29:41.383 に答える
8

主キーは、さまざまなテーブルを操作するために使用されます。これがリレーショナル データベースの基盤です。書籍データベースがある場合は、2 つのテーブルを作成することをお勧めします。1) 書籍と 2) INT 主キー「id」を持つ著者です。次に、書籍で著者名の代わりに id を使用します。

エントリを繰り返したくない場合は、一意のキーが使用されます。たとえば、本のテーブルにタイトルがあり、各タイトルに 1 つのエントリしかないことを確認したい場合があります。

于 2013-03-20T13:47:17.093 に答える
7

主キー- テーブルの主キーを 1 つだけテーブルに入れることができ、値をテーブルに入力するときにその列を空白のままにすることはできません。

一意のキー- テーブルに複数の一意のキーを配置でき、テーブルに値を入力するときにその列を空白のままにすることができます。主キーと一意のキーを適用すると、列は一意の値(同じではありません)を取ります。

于 2012-11-03T10:00:05.840 に答える
4

一意のキー:

  1. 複数の値を null にすることができます。
  2. 2 つのタプルが一意のキーで同じ値を持つことはできません。
  3. 1 つ以上の一意のキーを組み合わせて主キーを形成できますが、その逆はできません。

主キー

  1. 複数の一意のキーを含めることができます。
  2. タプルを一意に表します。
于 2016-04-18T03:21:04.300 に答える