• ベストアンサー

mysqlのindexとprimary keyについて

indexキーとprimary keyについてですが、違いというのは、NULLが許可されるか、されないかの違いでしょうか? データベースから検索する際に、indexキーがある方が検索スピードが速いということですが、あるHPに《PRIMARY KEY が宣言されたカラムは自動で Index Key と Unique Key が適応されます》とありました。 ですので、検索スピードを上げるには、PRIMARY KEYを設定すれば、indexキーが設定されたのと同じ事になるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

単純な違いはというと、Primaryキーは一意性があり重複が許されないものです。よってそのテーブルの検索キーワードになりますから通常Indexが張られます。 Uniqueは一意性を意味します。 なので Primaryキー = Uniqueキー + Indexキー ですね。 検索スピードを上げるためには条件となる項目がPrimaryかIndexであれば早くはなりますが、Primaryはむしろテーブル設計に拠るところが大きくて、一般的に用いられるのはIndexです。 また、条件全ての項目にIndexを張る必要はありません。 条件となる項目にIndexがあり、条件文の書き方(条件文の並び順とか)によっては少ないIndexで済みます。 たくさんIndexを張るとDBが大きくなってしまいますので。

hana43
質問者

お礼

ありがとうございます。 とても詳しく説明していただき、自分なりに多少理解できたと思います。もう少し勉強する必要があるかと思いますが・・・。 本当にありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

プライマリの用途としては親テーブルに子テーブルを結合するときの キーとするためのもの、もしくは特定のレコードを端的に確定させるための 検索キーという認識の方がわかりやすいかもしれませんね。 その用途から一意性を保証するためのuniqueと、検索性をあげるための indexがついているわけです。 「正規化」について学習すれば理解度が深まるかもしれません。

関連するQ&A