MySQLクライアント/サーバ・プロトコルは準備されたステートメントの使用を規定します。この能力には、mysql_stmt_init()初期化機能によって戻されたMYSQL_STMTステートメントハンドラー・データ構造が使われています。準備された実行は1回以上ステートメントを実行する効率的な方法です。ステートメントはその実行のために最初解析されます。その後、それは初期化機能によって戻されたシテートメントハンドルを使って複数回実行されます。
準備された実行は、基本的にクエリの解析が一度だけなので、一度以上実行されるステートメントの実行を、直接実行するより素早く行います。直接実行の場合、クエリは実行のたびに解析されます。準備された実行はまた、実行のたびにパラメータにデータを送るだけで済むので、ネットワークの通信料を減らす効果があります。
準備されたステートメントは状況によっては、性能の増加をもたらさない場合があります。最も良い結果を得るため、準備されたステートメントと準備されていないステートメントの両方を使って、自分のアプリプリケーションをテストして、最もよい性能が得られる方を選んでください。
プリペアド ステートメントの他の利点は、クライアントとサーバ間のデータ伝達をより効果的にするバイナリ プロトコルを使用していることです。
次のステートメントは準備されたステートメントとして用いることができます:CREATE
TABLEステートメント、DELETEステートメント、DOステートメント、INSERTステートメント、REPLACEステートメント、SELECTステートメント、SETステートメント、UPDATE並びに殆どのSHOWステートメント。
MySQL 5.1.10では、次のステートメントがサポートされています:
ANALYZE TABLE OPTIMIZE TABLE REPAIR TABLE
MySQL 5.1.12では、次のステートメントがサポートされています:
CACHE INDEX
CHANGE MASTER
CHECKSUM {TABLE | TABLES}
{CREATE | RENAME | DROP} DATABASE
{CREATE | RENAME | DROP} USER
FLUSH {TABLE | TABLES | TABLES WITH READ LOCK | HOSTS | PRIVILEGES
| LOGS | STATUS | MASTER | SLAVE | DES_KEY_FILE | USER_RESOURCES}
GRANT
REVOKE
KILL
LOAD INDEX INTO CACHE
RESET {MASTER | SLAVE | QUERY CACHE}
SHOW BINLOG EVENTS
SHOW CREATE {PROCEDURE | FUNCTION | EVENT | TABLE | VIEW}
SHOW {AUTHORS | CONTRIBUTORS | WARNINGS | ERRORS}
SHOW {MASTER | BINARY} LOGS
SHOW {MASTER | SLAVE} STATUS
SLAVE {START | STOP}
INSTALL PLUGIN
UNINSTALL PLUGIN
他のステートメントはMySQL 5.1にサポートされていません。
