SQL Server: 複数の INSERT ステートメントと複数の VALUES を含む単一の INSERT – パフォーマンスのパラドックス
問題: ベンチマーク テストでは、驚くべきことに、1000 個の INSERT
ステートメントを個別に実行する方が、1000 個の INSERT
節を含む単一の VALUES
ステートメントを実行するよりも高速であることがわかりました。
理由: SQL Server のクエリ処理には、解析後の重要な「バインディング」または「代数化」フェーズが含まれます。このフェーズでは、INSERT
ステートメント内の重複値を検出して処理し、最適化された実行プランを構築します。 このフェーズに必要な時間は、一意値の数に応じて大幅に増加します。
パフォーマンスインフルエンサー:
INSERT
ステートメントには有益ですが、値が多数ある場合にはボトルネックとなり、パフォーマンスを妨げる可能性があります。実行計画分析:
INSERT
を含む単一の VALUES
では、250 個の VALUES
節を超えるとコンパイル時間が急激に増加し、効率の低い非パラメータ化プランへの移行が示されます。実際的な意味:
INSERT
操作の場合は、複数の個別の INSERT
ステートメントを使用した方が高速になる可能性があります。INSERT
操作の場合、多数の INSERT
を含む単一の VALUES
の方が効率的である可能性があります。さらなる考慮事項:
INSERT
ステートメント内でユーザー定義関数 (UDF) を使用すると、パフォーマンスに悪影響を及ぼす可能性があります。以上がSQL Server で複数の INSERT ステートメントを使用した方が、複数の VALUES を含む 1 つの INSERT を使用するよりも高速になるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。