2009-04-20 14 views

答えて

16

一意の値を持つフィールドは基本的にキーです。ただし、キーはテーブル内の行を一意に識別するために使用され、インデックスはテーブル内の行をソートまたはグループ化するために使用されます。キーは最初に設定された後は変更しないでください。データベースのどこかで参照される可能性があります。ただし、インデックス付きフィールドは自由に変更できます。

4

キーはテーブル内の行を一意に識別します。インデックスは、テーブル内のフィールドに基づく行の順序です。索引は、システムが検索に使用するセット・フィールドの特定の順序でもかまいませんし、実際の行をルックアップするため、表には複数の索引を入れることができます。技術的には、システムが行を識別するために使用するキーは1つだけです。ほとんどの場合、これもプライマリインデックスですが、必ずしもそうである必要はありません。

+0

私はテーブルに複数のキーがあると思っていました。 –

+0

プライマリキーは1つしか使用できません。その主キーは複数のフィールドで構成できますが、キーは1つだけです。 1つ以上の外部キーを定義することもできますが、それはあなたの質問の範囲外である可能性があります。 –

2

ユニークはデータに強制される制約ですが、索引は物理的に行を順序付け(クラスタ化索引)したり、データベース内で論理的に(非クラスター化索引)索引付けして検索を高速化します。

+0

クラスタ化されたインデックスは物理的な順序ですが、クラスタ化されていないインデックスは論理的です。 –

3

キーはデータの整合性を維持するために使用され、インデックスはデータベースのパフォーマンスを維持するために使用されます。あなたが解決しようとしている問題があれば考えてください。そうすれば正しい方向に導くことができます。

2

キーは、ビジネスモデルの行の一意の識別子である必要があります。一意に索引付けされた列は、「代替キー」と見なすことができます。一般的に、SQLサーバーは主キーの一意のインデックスを自動的に作成します。

また、一意でない列にもインデックスを付けることができます。これらのインデックスは、索引付き列に対する問合せの高速化に使用されます。あなたはユニーク制約のSQL Serverはまた、作成されます作成するとき

1

あなたは主キーを作成する場合は、キーは常にシーン の背後にインデックスを持つことになりますが、SQL Serverはそれさえも

をサポートするために、クラスタ化された一意のインデックスを作成します。インデックス

もちろん、ユニーク制約とプライマリキーの違いは、ユニーク制約によって少なくとも1つのNULL値が許容されることです(SQLサーバー上で1つはOracle上に1つ以上)。 プライマリキーと複数(SQL Server上で249)テーブル上の一意の制約

9

キーは、データベースに格納されている行を識別します。インデックスは、本の最後にあるものと同じような構造です。本の終わりには、単語を含む複数のページが表示され、それらの単語を見つけることができます。これらのページはインデックスであり、データベースの場合も同じです。インデックスには、キーとその位置が含まれます。これは、行の位置を見つけるのに役立ちます。書籍の場合は、どのページでその単語を見つけることができるかを指し示します。データベース索引には同じ機能があります。

多くの場合、インデックスはbツリーで実装されています。しかし、これは実装の詳細です。インデックスを実装する方法はたくさんあります。

+2

これは素晴らしい説明です。特に、初心者から中級のDBユーザーの観点から質問が多くなってきているようです。 –

+3

ここで説明するように、ページ番号と "インデックス"として "キー"を考えてください...優れた相関関係。 – GalacticCowboy

1

キーには、MS SQL Serverのクラスタインデックスがデフォルトで設定されています。

キーは、各行に固有の値です。

データベースのパフォーマンスを最大限に引き出すためにインデックスを使用します。要件に応じて索引を作成できます。 異なる種類のインデックスがあります。

  • ビットマップ・インデックス
  • 高密度インデックス
  • スパースインデックス
  • カバーインデックス
4

キー(宣言)が制約です。キーデータがない場合、またはキーデータが既にテーブルにある行を複製する場合、行がテーブルに入力されないようにします。

索引は、索引で使用される列(フィールド)の値を指定した1行以上の行を迅速に検索できるデータ構造です。インデックスを使用して、特定の他の種類のクエリを高速化することもできます。たとえば、マージ・ジョインは、ジョイン条件を構成する2つの列のインデックスを使用します(それらのインデックスが両方とも存在する場合)。 DBMSがマージ結合を実行するかどうかは、クエリオプティマイザ、テーブルのサイズ、および必要なインデックスの有無によって異なります。

問題を少し混乱させるため、文献の一部は、インデックスが「インデックスキー」として使用する列を参照しています。同じ文献では、通常、主キーと外部キーを「論理キー」と呼びます。同じ文献では、キーを表の論理的な機能と呼ぶのに対し、索引は表の物理的な機能と呼ばれます。

主キーを宣言すると、ほとんどのDBMSがインデックスを作成します。この動作には2つの理由があります。 1つは、索引なしで重複を検出すると、大きな表に長い時間がかかります。もう一つは、おそらく主キーに基づいて多くのルックアップを実行しており、それらのルックアップはインデックスではるかに高速に実行されるということです。

2

キーは、各行を一意に識別するフィールドまたはフィールドのセットです。通常、プライマリキーとして指定されているキーが1つありますが、現在ではそれ自体が無意味な1つのフィールドであるようです(ページ番号のように、ページの内容を識別するために重要です)。

外部キーと呼ばれる別のテーブルのキーを持つテーブルを持つことは可能です。たとえば、オンラインストアのデータベースには、注文のテーブルがあり、各注文には関連付けられた顧客があるため、注文テーブルの各行には顧客テーブルの外部キーがあります。

インデックスは、テーブル内の1つ以上のフィールドに基づくデータ構造であり、これらのフィールドに基づいてテーブルにすばやくアクセスできます。インデックスは、個々の行(顧客の電子メールアドレスのインデックスなど)を識別したり、グループ(たとえば、顧客の非課税ステータス)を示すことがあります。これは、本の索引のように、または逆のディレクトリ(電話番号で注文された電話帳など)のように使用されます。

ほとんどの場合、キーはデータベースについて考える方法です(データベースにキーについて伝えることは可能ですが、データベースは重複キーなどの行を拒否できます)。インデックスは、データベースをより速く動作させる方法です。

関連する問題