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


191

次のコードのように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 ...、単語を繰り返す必要があること
KEY order_date (order_date)です。

回答:


263

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

以下からの手動入力CREATE TABLE

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


1
SQLYogの最新バージョンのテーブル情報を見ると、でテーブルKEY keyname (column_name)を作成したときに表示されますINDEX keyname (column_name)。同義語であるという事実は、それを完全に説明しています。
crmpicco 14

14

ここに「違い」についての良い説明があります:

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


2
MySQLでのSQL識別子KEYとINDEXの使用についての質問です。キーとインデックスの違いではありません。
Josh J

検索エンジンで違いを検索したところ、これが最初の結果でした。私の意見では、追加の質問を開く必要はありません。ただし、必要に応じて自由に行ってください。
ステファン

5

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

すでにこのセクションを引用し、5.1のヘルプにリンクしている人はいません。

同様にPRIMARY KEY、主キーとインデックスを KEY作成し、インデックスのみを作成します。


3

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

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

そう...

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

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

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


1
MySQLでのSQL識別子KEYとINDEXの使用についての質問です。キーとインデックスの違いではありません。
Josh J

-1

キーは、インデックスを構築する一連の列または式です。

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

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

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

https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721を確認してください


3
MySQLでのSQL識別子KEYとINDEXの使用についての質問です。キーとインデックスの違いではありません。
Josh J

1
@Josh Jもともとの動機が識別子について尋ねることだったとしても、検索エンジンでキーとインデックスに関する違いを検索すると、このトピックが生成されます。質問のタイトルをより具体的に改善することは理にかなっています。一方、mysqlでキーとインデックスの違いについて質問を書くと、重複としてマークされる可能性があります。=>私はそのような補完的な答えが非常に役立つと思います。「本当の」答えはとにかく最高のスコアを取得します。そのため、補完的な回答に対して反対票を投じる理由はわかりません。
ステファン

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