11

便利な自動インクリメントとUNIQUE機能は別として、PKは実際にインデックスを高速化しますか?

非PKインデックスINTまたはPK(同じ列、2つの異なるテスト)のどちらでも速度は同じですか?同じシステムの同じテーブルに同じ列がある場合UNIQUE INT、インデックスのある列でもPKが有効になっていると、より高速になりますか?PKは、共存するインデックスを高速化しますか?

よろしければ、実際の結果はシステム統計のみを使用してください。

4

2 に答える 2

18

テーブルの主キーは、最も重要なクエリで使用する列または列のセットを表します。クエリのパフォーマンスを高速化するために、インデックスが関連付けられています。クエリのパフォーマンスは、 NULL値を含めることができないため、NOTNULL最適化の恩恵を受けます。InnoDBストレージエンジンを使用すると、テーブルデータが物理的に編成され、主キーの1つまたは複数の列に基づいて超高速のルックアップと並べ替えが実行されます。

テーブルが大きくて重要であるが、主キーとして使用する明確な列または列のセットがない場合は、主キーとして使用する自動インクリメント値を使用して別の列を作成できます。これらの一意のIDは、外部キーを使用してテーブルを結合するときに、他のテーブルの対応する行へのポインターとして機能します。

次の場所も参照してください:http ://www.dbasquare.com/2012/04/04/how-important-a-primary-key-can-be-for-mysql-performance/およびhttp://www.w3schools .com / sql / sql_primarykey.asp

于 2013-01-05T19:51:46.297 に答える
3

ベーステーブルの行は、テーブルに定義されている主キーの値によって一意に識別されます。テーブルの主キーは、1つ以上の列の値で構成されます。

主キーは、効果的な情報検索を容易にするために自動的にインデックスが付けられます。

主キーインデックスは、テーブルの最も効果的なアクセスパスです。

他の列または列の組み合わせは、データ取得のパフォーマンスを向上させるためのセカンダリインデックスとして定義できます。セカンダリインデックスは、テーブルが作成された後(CREATE INDEXステートメントを使用して)テーブルに定義されます。

セカンダリインデックスが役立つ場合の例は、多くの行があるテーブルのキーのない列で検索が定期的に実行される場合です。列にインデックスを定義すると、検索が高速化される場合があります。検索結果はインデックスの影響を受けませんが、検索の速度は最適化されます。

ただし、インデックスも更新する必要があるため、インデックスによって更新、削除、および挿入操作のオーバーヘッドが発生することに注意してください。

インデックスは内部構造であり、一度作成するとユーザーが明示的にアクセスすることはできません。内部クエリ最適化プロセスで検索の効率が向上すると判断された場合は、インデックスが使用されます。

SQLクエリは、内部で実行できるように準備されると、自動的に最適化されます。最適化プロセスは、各クエリを実行するための最も効果的な方法を決定します。これには、該当するインデックスの使用が含まれる場合と含まれない場合があります。

于 2013-01-05T19:43:41.973 に答える