# プリペアドステートメントを使うべき理由

__*プリペアドステートメント*__

+ クエリのパフォーマンスを向上させる
  + ステートメントを 1 回準備し、その都度異なる変数値を使用して複数回実行します
  + サーバーは、ステートメントの準備時にステートメントを 1 回だけ解析します
  + クライアントはバイナリプロトコルを使用してステートメントリクエストを行います
    + サーバーの `CPU` オーバーヘッドの削減
    + 各 `SQL` ステートメントを個別に再送信する場合に比べて、サーバーとクライアント間のネットワークトラフィックが減少する
+ データ型が `SQL` ステートメントで正しく参照されていることを確認する
+ `SQL`注射は避けてください

-------------------------------------------------------------------------

サーバーがステートメントを作成すると、そのステートメントのプロトコルが作成されます。通常、クライアントは SQL ステートメントを値とともに渡し、これらはTiDB サーバーによって元のテキスト文字列から解析されます。プリペアドステートメントメントのプロトコルは、値をステートメントの残りの部分から分離し、値を送信するためのバイナリメカニズムを提供します。これは、文字列を変換したり、文字列から変換したりするよりも効率的です。

プリペアドステートメントは、SQL インジェクションと呼ばれる攻撃を防ぐのにも役立ちます。悪意のあるユーザーが、値を要求するアプリケーションに SQL ステートメントを挿入する可能性があります。プリペアドステートメントは、SQL ステートメントを値から分離し、値が SQL ステートメントとして解釈されるのを防ぎます。
