ホームページ  >  記事  >  データベース  >  MySQL で複合主キーを使用すると、最大 100 万行、200 回の挿入/秒、200 回の選択/秒のテーブルに対する挿入、更新、選択の操作に大きな影響がありますか?

MySQL で複合主キーを使用すると、最大 100 万行、200 回の挿入/秒、200 回の選択/秒のテーブルに対する挿入、更新、選択の操作に大きな影響がありますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 09:54:30508ブラウズ

 Does using a composite primary key in MySQL significantly impact insert, update, and select operations for a table with ~1 million rows, 200 inserts/second, and 200 selects/second?

MySQL における複合主キーのパフォーマンスへの影響

MySQL では、複合主キーは複数のフィールドを結合してテーブル内の行を一意に識別します。複合主キーはデータの整合性や特定の種類のクエリに利点をもたらしますが、潜在的なパフォーマンスへの影響に関する懸念も生じます。

提供されたコンテキストは、MySQL 5.1 の 3 つのフィールドで構成される複合主キーを持つテーブルを記述します。 1 秒あたり約 200 件の挿入と 200 件の選択があり、テーブル サイズが約 100 万行である場合、複合主キーがこれらの操作のパフォーマンスに影響するかどうかという疑問が生じます。

挿入と更新への影響

この質問に対する答えは、複合主キーを使用する場合と単純な自動インクリメント整数 (INT) 主キーを使用する場合のパフォーマンスの違いは、挿入と更新では無視できるということです。どちらのタイプの主キーも、特にコンテキストで説明されている限られた数の挿入と更新の場合、同様に実行されます。

選択への影響

複合主キーの影響選択時のキー操作はさまざまな要因によって異なります。 InnoDB テーブルは主キー値に基づいて暗黙的にクラスター化されます。つまり、主キーに基づく行の検索は、セカンダリ インデックスを使用するよりも高速になります。ただし、この利点は、複合主キーの両方のフィールドがクエリの WHERE 句に含まれている場合にのみ実現されます。

たとえば、テーブル レイアウトに (col1、col2) の複合主キーが含まれており、クエリは、col1 に基づいて行のみを検索します。検索では主キーは利用されず、代わりにセカンダリ インデックス (存在する場合) が使用されるか、テーブル全体のスキャンが実行されます。

自動との比較-Incrementing Field

自動インクリメント フィールドが「偽の」主キーとして使用される場合、SELECT 操作中に追加の検索が必要になります。このシナリオでは、エンジンはまず複合キー (col1、col2) のインデックス内で対応する行ポインターを見つけてから、その行ポインターを使用してテーブルから実際の行を取得する必要があります。このプロセスは、特に複合キーのインデックスが最適に設計されていない場合、複合主キーを使用する場合に比べて若干時間がかかります。

結論

MySQL では、特に複合キー内のすべてのフィールドがクエリの WHERE 句で使用されていない場合、複合主キーは SELECT 操作のパフォーマンスに影響を与える可能性があります。ただし、適度な数の挿入、更新、選択を伴う特定のシナリオでは、複合主キーを使用する場合と自動インクリメント フィールドを使用する場合の違いは最小限になる可能性があります。

以上がMySQL で複合主キーを使用すると、最大 100 万行、200 回の挿入/秒、200 回の選択/秒のテーブルに対する挿入、更新、選択の操作に大きな影響がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。