MySQL における INDEX と KEY の違い
MySQL では、INDEX と KEY はクエリのパフォーマンスを向上させるために使用される同義語であり、本質はありません違い。ただし、ISO SQL との互換性の理由から、INDEX を使用することをお勧めします。
MySQL マニュアルの CREATE TABLE の説明には、「KEY は通常、INDEX の同義語です。カラム定義で指定すると、主キー属性 PRIMARY KEY も KEY として指定できます。これは互換性のためです。」他のデータベースシステムでは「
例えば、以下の 3 つの CREATE TABLE を実装します。
CREATE TABLE orders1 ( order_id int PRIMARY KEY ); CREATE TABLE orders2 ( order_id int KEY ); CREATE TABLE orders3 ( order_id int NOT NULL, PRIMARY KEY ( order_id ) );
のステートメントは同等であり、データベース内に同じテーブル オブジェクトを生成します:
CREATE TABLE orders4 ( order_id int NOT NULL, KEY ( order_id ) ); CREATE TABLE orders5 ( order_id int NOT NULL, INDEX ( order_id ) );
一方、次の 2 つのステートメントは同等ですが、上記の 3 つのステートメントとは異なります:
これは、これらのステートメントでは、KEY と INDEX が PRIMARY KEY ではなく INDEX の同義語であるためです。したがって、 KEY ( order_id ) メンバーと INDEX ( order_id ) メンバーは主キーを定義せず、ジェネリック インデックス オブジェクトのみを定義します。これは KEY とは完全に異なります (行を一意に識別しないため)。CREATE TABLE orders1 ( order_id int NOT NULL, PRIMARY KEY ( order_id ) ) CREATE TABLE orders2 ( order_id int NOT NULL, PRIMARY KEY ( order_id ) ) CREATE TABLE orders3 ( order_id int NOT NULL, PRIMARY KEY ( order_id ) ) CREATE TABLE orders4 ( order_id int NOT NULL, KEY ( order_id ) ) CREATE TABLE orders5 ( order_id int NOT NULL, KEY ( order_id ) )
以上がMySQL の「INDEX」と「KEY」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。