1つのintPRIMARYKEYIDENTITY列を持つ巨大なテーブルがあります。
その主キーを使用してSELECTクエリを作成することが、データベースがテーブル内の行を見つけるための最速の方法だと思いますね。
それが本当なら、私はまだ質問があります。そのクエリは、キーによる辞書の呼び出しと同じくらい高速ですか、それともデータベースは、行自体が見つかるまで、最初からすべての行(主キー列)を読み取る必要がありますか?
よろしくお願いします^^
1つのintPRIMARYKEYIDENTITY列を持つ巨大なテーブルがあります。
その主キーを使用してSELECTクエリを作成することが、データベースがテーブル内の行を見つけるための最速の方法だと思いますね。
それが本当なら、私はまだ質問があります。そのクエリは、キーによる辞書の呼び出しと同じくらい高速ですか、それともデータベースは、行自体が見つかるまで、最初からすべての行(主キー列)を読み取る必要がありますか?
よろしくお願いします^^
主キーを使用することは、特定の行にアクセスするための最速の方法であることは明らかです。
それがどのように機能するかを理解したい場合は、インデックスがどのように機能するかを理解する必要があります。
一般に、次のように機能します。
テーブルt1(col1,col2...col10)
があり、 にインデックスがあるとしますcol1
。インデックス オンとは、ペア
をcol1
含むデータ構造があり、適切な行に直接アクセスできることを意味します。データ構造は によって順序付けられているため、 による効率的な検索が可能です。(col1, rec_id)
rec_id
col1
col1
col1
辞書での検索は、二分探索のようなものであるはずの辞書検索アルゴリズムごとに機能すると思います。
テーブルで列を主キーとして宣言すると、その列にインデックスが付けられます。したがって、ハッシュの原則に基づいて機能するはずなので、前述のように検索は行ごとではありません。
最後に、はい、これは一般的で高速な方法ですが、SQLクエリで必要な列と行の数を選択する必要があります。select呼び出しごとに多数の行をフェッチすることは避けてください。