title | category |
---|---|
Prepared SQL 语句语法 |
user guide |
TiDB 支持服务器端的 Prepared 语句,这种方式可以降低语句解析以及查询优化的开销,提高执行效率。有两种方式可以使用 Prepared 语句:
大多数 MySQL Driver 都支持 Prepared 语句,比如 MySQL Connector/C。这种方式可以通过 Binary 协议直接调用 Prepared 语句 API。
通过 PREPARE
,EXECUTE
以及 DEALLOCATE PREPARE
这三个语句也可以实现 Prepared 语句,这种方式不如第一种方式效率高,但是不需要写程序即可使用。
PREPARE stmt_name FROM preparable_stmt
PREPARE
语句对 preparable_stmt
做预处理(语法解析、语义检查、查询优化)并将其处理结果命名为 stmt_name
,后面的操作可以通过 stmt_name
来引用。处理好的语句可以通过 EXECUTE
语句执行或者是通过 DEALLOCATE PREPARE
语句释放。
EXECUTE stmt_name [USING @var_name [, @var_name] ...]
EXECUTE
语句执行名字为 stmt_name
的预处理语句。如果预处理语句中有参数,则可以通过 USING
子句中的 User Variable 列表给参数赋值。
{DEALLOCATE | DROP} PREPARE stmt_name
DEALLOCATE PREPARE
语句删除 PREPARE
产生的预处理语句结果。
更多信息请参考 MySQL Prepared Statement Syntax。