主キーと同じサイズの他のフィールドを持つレコードを検索/選択する場合、パフォーマンスに違いはありますか?
また、主キーとして GUID を使用し、主キーとして Int を使用したこのようなクエリのパフォーマンスの比較は異なりますか?
主キーと同じサイズの他のフィールドを持つレコードを検索/選択する場合、パフォーマンスに違いはありますか?
また、主キーとして GUID を使用し、主キーとして Int を使用したこのようなクエリのパフォーマンスの比較は異なりますか?
キーはデータベースの論理的な機能ですが、パフォーマンスは完全に物理的な機能 (ストレージ形式、インデックス作成、およびデータ アクセスに内部的に使用される方法) によって決定されます。したがって、原則として答えはNoです。キーまたはその他の非キー属性によるデータへのアクセスに違いが必要な根本的な理由はありません。ストレージ、インデックス作成、および使用している DBMS に関する詳細情報がわかっている場合にのみ、より具体的な回答が可能になる場合があります。
一意のキー: 2 つの行が類似していない列
主キー: テーブル内のすべての行を一意に識別できる最小数の列のコレクション (つまり、主キーを構成するすべての列で類似する行はありません)。テーブルには複数の主キーが存在する場合があります。一意のキーが存在する場合、それはテーブルの主キー (「その」主キーではない) です。一意のキーが存在しない場合、(first_name、last_name、father_name、mother_name) のような行を識別するために複数の列の値が必要になり、一部のテーブルでは主キーを構成できます。
インデックス: クエリを最適化するために使用されます。ある列に基づいて結果を何度も検索またはソートする場合 (たとえば、ほとんどの人は学生をロール番号ではなく名前で検索します)、列の値がすべて「たとえば、バイナリ ツリー アルゴリズムを使用します。
違いは、主キーにはインデックスがあるため、通常、主キーによる検索は、インデックスがない他のフィールドよりも高速です。とにかく、主キーではないフィールドにインデックスを付けることができ、検索に違いはありません。
はい。パフォーマンスの問題があります。
主キーを使用した検索は、他のフィールドを使用した検索よりもはるかに高速です。主キーは一意であり+notnullであり、インデックスも持っているためです。