web-dev-qa-db-ja.com

MySQLでのINDEXとKEYの使用の違いは何ですか?

次のコードのように、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)

167
shin

違いはありません。それらは同義語です。

CREATE TABLE手動エントリ から:

KEYは通常、INDEXの同義語です。キー属性PRIMARY KEYは、列定義で指定された場合、単にKEYとして指定することもできます。これは、他のデータベースシステムとの互換性のために実装されました。

232
nos

ここに Nice description についての「違い」があります:

「MySQLでは、すべてのキーにもインデックスを付ける必要があります。これは、パフォーマンスを向上させるためのMySQL固有の実装の詳細です。」

12
Stefan

「テーブルの作成」ドキュメントでINDEXの同義語として言及されています: MySQL 5.5リファレンスマニュアル:: 13 SQLステートメント構文:: 13.1データ定義ステートメント:: 13.1.17 CREATE TABLE構文 =

Nosはすでにこのセクションを引用し、5.1のヘルプをリンクしました。

PRIMARY KEYが主キーとインデックスを作成するように、KEYはインデックスのみを作成します。

4
fineliner

キーはテーブル内で非常に特定の役割を果たす特別なフィールドであり、キーの種類によってテーブル内での目的が決まります。

インデックスは、RDBMS(データベース管理システム)がデータ処理を改善するために提供する構造です。インデックスは、論理的なデータベース構造とは関係ありません。

そう...

キーはテーブル内のレコードを識別するために使用する論理構造であり、インデックスはデータ処理を最適化するために使用する物理構造です。

出典:単なる死者のためのデータベース設計

著者:マイケル・エルナンデス

3
JayD

キーは、インデックスを作成する列または式のセットです。

  1. インデックスはデータベースに格納される構造ですが、キーは厳密に論理的な概念です。

  2. インデックスはレコードへの高速アクセスに役立ちますが、キーはレコードを一意に識別するだけです。

  3. すべてのテーブルには必ずキーがありますが、インデックスを持つことは必須ではありません。

確認 https://docs.Oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721

0
Atulya Anand