こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

sql文について

phpとmysqlの参考書を購入したのですがわからないことがあり
質問させてください。
参考書のサンプルとしてsample.sqlには以下の内容があります。

CREATE TABLE IF NOT EXISTS `author` (
`author_id` int(11) NOT NULL auto_increment,
`author_name` varchar(255) NOT NULL default '',
`author_name_kana` varchar(255) NOT NULL default '',
`state` int(11) NOT NULL default '0',
`description` text NOT NULL,
PRIMARY KEY (`author_id`),
KEY `author_name` (`author_name`),
KEY `author_name_kana` (`author_name_kana`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

PRIMARY KEY (`author_id`),まではわかるのですがそれ以下の
KEY ・・・とはなんのためにあり何をするのでしょうか?
PRIMARY KEY・・・は主キーをauthor_idにするという設定かと
思うのですがKEY ・・・について意味がわかりません。

基本的すぎる事なのか参考書に説明がありませんでした^^;
詳しい方おりましたらわかりやすく教えて頂けますと幸いです。
宜しくお願い致します。

投稿日時 - 2008-09-07 03:25:56

QNo.4309634

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

どうやらMySQLの話のようですが、"KEY"はINDEXのシノニム(別名)です。
つまり、INDEXと同じということですね。

INDEXが何かはおそらく参考書に記載があるかと思いますが、簡単に言えば検索時の
パフォーマンスをあげるために、見出しを付けるということです。

質問の例で言えば主キーがauthor_idで、さらにauthor_nameとauthor_name_kanaに
インデックスを付けるということです。author_nameとauthor_name_kanaについて
select文で検索をすることが多いということでしょう。

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/indexes.html

投稿日時 - 2008-09-07 03:41:48

お礼

お返事ありがとうございます。
>つまり、INDEXと同じということですね。
>パフォーマンスをあげるために、見出しを付けるということです。

そのようなことができるのですね。非常に参考になります!

KEY `author_name` (`author_name`),
KEY `author_name_kana` (`author_name_kana`)

は参考URLの通り

INDEX `index_name` (`author_name`),
INDEX `index_name_kana` (`author_name_kana`)

でも同様に使えるという解釈でいいのでしょうか?

投稿日時 - 2008-09-07 14:35:41