2009-09-09 12 views
128

私は次のコードのようにINDEXを使用する方法を知っています。私は外部キーとプライマリキーの使い方を知っています。インデックスのバージョンとの違いは何ですか? MySQLのキー

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)。

答えて

182

違いはありません。彼らは同義語です。 the CREATE TABLE manual entryから

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

これは、「テーブルを作成する」ドキュメントに INDEXの同義語として言及されている
+1

にチェックします。それが同義語であるという事実はそれを完全に説明します。 – crmpicco

3

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

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

SO ...

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

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

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

+0

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

6

は "違い" についての素晴らしい説明です:
http://discuss.fogcreek.com/joelonsoftware5/default.asp?cmd=show&ixPost=152398

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

+0

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

0

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

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

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

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

SQLyogの最新バージョンでは、テーブルの情報を見てみると、私は `INDEXキー名(COLUMN_NAME)`を使用してテーブルを作成したとき、それは `` KEYキー名(COLUMN_NAME)を示しhttps://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721

+0

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

関連する問題