1. ホーム
  2. sql

[解決済み] SQL:プライマリキーとインデックスは一体何をするのですか?

2022-02-10 13:39:51

質問

最近、SQLデータベースを使用する初めての本格的なアプリケーションを開発し始め、phpMyAdminを使ってテーブルをセットアップしているところです。様々なカラムにいくつかのオプション機能(quot;features")を与えることができますが、それらが何をするものなのかがよくわかりません。

  • 主キー
  • インデックス

PKが何のためにあり、どのように使うかは知っていますが、それに関する私の質問は、なぜPKが必要なのか、つまり、PKを1つしか持てないという事実以外に、単に列を"Unique"に設定するのとどう違うのかということです。この値がレコードを一意に識別することをプログラマに知らせるためだけなのでしょうか。それとも、何か特別なプロパティがあるのでしょうか?

実際、私がこの言葉を使ったのを見たのは、(1)私の主キーがインデックスされているように見えること、(2)インデックス付けはパフォーマンスと何らかの関係があり、インデックス付きのカラムが必要だが、多すぎてもいけないと聞いたこと、だけです。インデックスを付けるカラムはどのように決めればいいのでしょうか?

を編集してください。 ORDER BYしたい列のインデックスを作成する必要がありますか?

ありがとうございました。

マーラ

解決方法は?

プライマリキーは通常、レコードに数値の「id」を作成するために使用され、このid列は自動的にインクリメントされます。

例えば books テーブルで id フィールドがあり、ここで id は主キーであり、また auto_increment (phpmyadminの'Extra'の下)、最初にテーブルに本を追加したとき、その本のidは1'になります。次の本の ID は自動的に '2' になり、以下同様です。通常、すべてのテーブルには少なくとも1つの主キーがあり、レコードの識別と検索を容易にする必要があります。

インデックスは、あるテーブルから特定の情報を定期的に取り出す必要がある場合に使用します。たとえば users テーブルにアクセスする必要があります。 email カラムにインデックスを追加すれば、Eメールにアクセスするクエリーが高速になります。

ただし、不要なインデックスを追加することにはデメリットもあるので、本当にアクセスする必要のあるカラムだけに追加しましょう。例えば UPDATE , DELETEINSERT クエリの実行速度は、インデックスが多いほど若干遅くなります。詳細は以下を参照してください。 このページ .

編集: はい、必要なカラムは ORDER BY で使用されるものと同様に、インデックスを持つべきです。 WHERE .