2012-04-29 10 views
4
CREATE TABLE IF NOT EXISTS `scores` (
    `userID` int(11) NOT NULL, 
    `sessionID` int(11) NOT NULL, 
    `points` double NOT NULL DEFAULT '0', 
    PRIMARY KEY (`userID`,`sessionID`), 
    KEY `par_ind1` (`userID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

MySQLの "KEY" のキーワード行は何

KEY `par_ind1` (`userID`) 

は何を? (userIDは別のテーブルのプライマリキーですか?)

+0

[KEYキーワードの意味は?](http://stackoverflow.com/questions/924265/what-does-the-key-keyword-mean) – edin1

答えて

9

KEYは、INDEXの同義語です。これにより、sessionIDと既に共有している複合キーに加えてuserIDという列にpar_ind1という名前のインデックスが作成されます。

は、完全な詳細については、MySQL CREATE TABLEドキュメントを参照してくださいが、ここでは関連する部分は次のとおりです。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name 
    { LIKE old_tbl_name | (LIKE old_tbl_name) } 
create_definition: 
    col_name column_definition 
    | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) 
     [index_option] ... 

    /* Key/Index creation */ 
    | {INDEX|KEY} [index_name] [index_type] (index_col_name,...) 
     [index_option] ... 

index_typeが指定されていないので、デフォルトが使用されています。テーブルストレージエンジンによって異なるデフォルトのインデックスタイプについては、CREATE INDEX referenceを参照してください。このようなInnoDBテーブルでは、インデックスはBTREEです。

3

この列には二次的で一意でないインデックスが作成されます。このコンテキストではINDEXKEYを互換的に使用できます。

関連する問題