ホームページ  >  記事  >  データベース  >  mysqlの主キーとインデックスの関係と違い

mysqlの主キーとインデックスの関係と違い

伊谢尔伦
伊谢尔伦オリジナル
2016-11-24 11:37:171186ブラウズ

リレーショナル データベースは、データベースの物理モデルの基礎である主キーに依存します。主キーの物理レベルでの目的は 2 つだけです:

行を一意に識別すること。

外部キーによって有効に参照できるオブジェクトとして。

インデックスは特別なファイルです (InnoDB データ テーブルのインデックスはテーブル スペースのコンポーネントです)。これらには、データ テーブル内のすべてのレコードへの参照ポインターが含まれています。以下に、主キーとインデックスの違いと関係をいくつか示します。

1. 主キーは一意のインデックスである必要がありますが、一意のインデックスは必ずしも主キーである必要はありません。

いわゆる主キーは、テーブル内の行を一意に識別できる属性または属性グループです。テーブルには主キーを 1 つだけ持つことができますが、複数の候補インデックスを持つことができます。主キーはレコードの行を一意に識別できるため、データの更新および削除時にエラーが発生しないことを保証できます。上記の機能に加えて、主キーはデータの不整合を防ぐために外部キーとの参照整合性制約を形成することがよくあります。データベースを設計する場合、主キーは非常に重要な役割を果たします。

主キーにより、レコードが一意であり、主キーフィールドが空ではないことが保証されます。データベース管理システムは主キーに対して一意のインデックスを自動的に生成するため、主キーも特別なインデックスになります。

2. テーブルには複数の一意のインデックスを作成できますが、主キーは 1 つだけです。

3. 主キー列では null 値が許可されませんが、一意のインデックス列では null 値が許可されます。

4. インデックスによりクエリ速度が向上します。

実際、主キーとインデックスは両方ともキーですが、主キーは論理キーであり、インデックスは物理キーです。つまり、主キーは実際には存在しませんが、インデックスは実際にはデータベースに存在します。主キーは通常、同じレコードに対してインデックスを構築する必要はありませんが、テーブルにクエリを実行する必要がある場合は、インデックスを構築することをお勧めします。検索。

FAQ

1. 主キーとは何ですか?

皆さんもこの本を読んだことがない場合は、コピーを見つけて確認してください。各ページのページ番号は、データテーブルの主キーがこのページ番号に相当します。

2. インデックスとは何ですか?

また、本を例に挙げると、インデックスは本の目次に相当し、本の基本的な内容と構造をすぐに知ることができます。インデックスを使用すると、データ テーブルのクエリを高速化できます。

3. 主キーと主インデックスの類似点とその機能?

主キーはデータベースレコードの一意性を識別するためのものであり、レコードの重複は許可されず、キー値を空にすることもできません。

データテーブルでは主キーは 1 つだけ許可されますが、複数のインデックスが存在する可能性があります。

主キーを使用すると、データベースによって主インデックスが自動的に作成され、クエリの効率を高めるために非主キーにインデックスを作成することもできます。

インデックスはクエリ速度を向上させることができます。これは辞書のディレクトリに相当し、テーブル全体のスキャンを実行せずに、目的の結果をすばやくクエリできます。

主キーインデックスと外部インデックスの値は空にすることができます。

主キーは複数のフィールドで構成され、複合主キーを形成することもできます。同時に、主キーは一意のインデックスである必要があります。

一意のインデックスとは、インデックス値が一意であり、テーブルが複数の一意のインデックスを持つことができることを意味します。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。