次のコードのように、INDEXの使用方法を知っています。そして、私は外部キーと主キーの使い方を知っています。
CREATE TABLE tasks (
task_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INT UNSIGNED NOT NULL DEFAULT 0,
task VARCHAR(100) NOT NULL,
date_added TIMESTAMP NOT NULL,
date_completed TIMESTAMP,
PRIMARY KEY (task_id),
INDEX parent (parent_id),
....
ただし、次のようにINDEXの代わりにKEYを使用するコードを見つけました。
...
KEY order_date (order_date)
...
MySQLの公式ページで説明が見つかりませんでした。 KEYとINDEXの違いを教えてください。
私が見る唯一の違いは、KEY ...
を使用するとき、Wordを繰り返す必要があることです。KEY order_date (order_date)
。
違いはありません。それらは同義語です。
KEY
は通常、INDEX
の同義語です。キー属性PRIMARY KEY
は、列定義で指定された場合、単にKEY
として指定することもできます。これは、他のデータベースシステムとの互換性のために実装されました。
ここに Nice description についての「違い」があります:
「MySQLでは、すべてのキーにもインデックスを付ける必要があります。これは、パフォーマンスを向上させるためのMySQL固有の実装の詳細です。」
「テーブルの作成」ドキュメントでINDEX
の同義語として言及されています: MySQL 5.5リファレンスマニュアル:: 13 SQLステートメント構文:: 13.1データ定義ステートメント:: 13.1.17 CREATE TABLE構文 =
Nosはすでにこのセクションを引用し、5.1のヘルプをリンクしました。
PRIMARY KEY
が主キーとインデックスを作成するように、KEY
はインデックスのみを作成します。
キーはテーブル内で非常に特定の役割を果たす特別なフィールドであり、キーの種類によってテーブル内での目的が決まります。
インデックスは、RDBMS(データベース管理システム)がデータ処理を改善するために提供する構造です。インデックスは、論理的なデータベース構造とは関係ありません。
そう...
キーはテーブル内のレコードを識別するために使用する論理構造であり、インデックスはデータ処理を最適化するために使用する物理構造です。
出典:単なる死者のためのデータベース設計
著者:マイケル・エルナンデス
キーは、インデックスを作成する列または式のセットです。
インデックスはデータベースに格納される構造ですが、キーは厳密に論理的な概念です。
インデックスはレコードへの高速アクセスに役立ちますが、キーはレコードを一意に識別するだけです。
すべてのテーブルには必ずキーがありますが、インデックスを持つことは必須ではありません。
確認 https://docs.Oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721