KEYキーワードの意味は?


141

このMySQLテーブル定義では:

CREATE TABLE groups (
  ug_main_grp_id smallint NOT NULL default '0',
  ug_uid smallint  default NULL,
  ug_grp_id smallint  default NULL,
  KEY (ug_main_grp_id)
);

何をするKEYキーワード意味ですか?これは主キーではなく、外部キーではないので、単なるインデックスですか?もしそうなら、で作成されたこのタイプのインデックスの何が特別なのKEYですか?


1
「KEY」演算子はMySQL Server 5.5では使用されていないようです。いつ削除されたかはわかりませんが、5.1には問題がありますが、5.5にはありません。
斜め

回答:


190

http://dev.mysql.com/doc/refman/5.1/en/create-table.htmlからの引用

{INDEX|KEY}

そうKEYですINDEX;)


9
表記{INDEX | KEY}は、一般にINDEXとKEYが同じ意味であること、またはKEYがINDEXであることを意味しません;)
sergtk

1
@sergtk:MySQLマニュアルの表記に従って、FOO | BARは、キーワードFOOまたはキーワードBARのいずれかを使用できることを意味します。Id est、それらは同義語です。
dotancohen 2014年

4
丁度!MySqlマニュアルは、INDEXとKEYが同義語であることを明確にしています-これが私が答えを賛成した理由です。しかし、回答から、BNF表記{|}はこの場合だけでなく、常に同義語を記述したと結論付けることができます。
sergtk 2014年

3
これは正しくありません。Quora(ユーザーKristian Kohntoppを参照)で最高の答えを見つけましたquora.com/…:KEYは制約です。INDEXはその制約を実装するために必要なデータ構造です。実際には、たとえばFKがある場合は、KEY key_name (user_id), CONSTRAINT foreign_key_constraint_name FOREIGN KEY (user_id) REFERENCES auth_user (id)使用するINDEX(HASHとBTREE)を追加で指定することもできます。この例は、KEYとINDEXが同義語ではないことを示しています。
oneloop 2017年

4
それが時代遅れであるかどうかにかかわらず、誰もそのキーワードの用途が何であるかを説明しませんでした。主キーがある場合、なぜ「キー」もあるのですか?2つのインデックスのポイントは何ですか?
plz

36

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

column_definition:
      data_type [NOT NULL | NULL] [DEFAULT default_value]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      ...

参照:http : //dev.mysql.com/doc/refman/5.1/en/create-table.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.