Mysql中prepare预处理怎么用

发布时间:2021-09-11 10:08:45 作者:小新
来源:亿速云 阅读:320

这篇文章主要介绍Mysql中prepare预处理怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

MySQL PREPARE预处理技术意义在于,是为了减轻服务器压力的一种技术。

就是说绝大多数情况下,某需求某一条SQL语句可能会被反复调用执行,或者每次执行的时候只有个别的值不同。
比如:

1.预处理

MySQL提供了对服务器端准备语句的支持,就叫预处理。

这种支持利用了高效的客户机/服务器二进制协议,使用带有参数值占位符的预编译语句有以下好处:

预处理接口

1.应用程序中的预处理语句
可以通过客户端编程接口使用服务器端准备好的语句,包括用于C程序的MySQL C API客户端库,用于Java程序的MySQL Connector/J,以及用于使用。NET技术的程序的MySQL Connector/NET。例如,C API提供了一组函数调用,这些函数调用构成了它的预编译语句API

2.SQL脚本中的准备语句
还有一个用于预处理语句的替代SQL接口。但不需要编程,在SQL级别直接可用,可以在任何可以将SQL语句发送到要执行的服务器的程序中使用它,例如mysql客户端程序。

2.预处理应用方式

预处理语句的SQL语法基于三个SQL语句:

A.例子:

预处理语句无法跨SESSION操作:

mysql>CREATE TABLE `t1` (
  `id` int NOT NULL,
   NAME varchar(20),
KEY `idx_id` (`id`)
) ENGINE=InnoDB ;
 
mysql>INSERT INTO t1(id,name) values(1,'A'),(2,'B'),(3,'C'),(4,'D'),(5,'E'),(6,'F');
 
#设定预处理语句
mysql>PREPARE stmt1 FROM  'SELECT * FROM t1 WHERE a=? ';
 
#设置传递变量
mysql>SET @a = 8;
 
#执行语句
mysql>EXECUTE stmt1 USING @a;
 
#释放预处理语句
mysql>DEALLOCATE PREPAR stmt1;

B.预处理对执行计划变化跟踪

通过观察status指标Select_scan(执行全表搜索查询的数量)变化判断是否会受到数据量变更的影响。

Mysql中prepare预处理怎么用

预处理sql语句随着数据量的变化执行计划也在变更。

C.存储过程包含预处理

预处理语句在存储的例程中创建预处理语句,则在存储的例程结束时不会释放该语句。

DELIMITER //
 
DROP PROCEDURE IF EXISTS proc_prepared;
CREATE PROCEDURE proc_prepared()
BEGIN
DECLARE a INT;
DECLARE i INT;
PREPARE stmt1 FROM  'SELECT * FROM t1 WHERE id>? ';
SET @a = 5;
EXECUTE stmt1 USING @a;
END //
 
DELIMITER ;
 
call proc_prepared();
存储过程之后单独调用预处理语句,返回结果集:说明预处理没有销毁
 
SET @a = 5;
EXECUTE stmt1 USING @a;
+----+------+
| id | NAME |
+----+------+
|  6 | F    |
。。。

存储过程之后单独调用预处理语句,返回结果集:说明预处理没有销毁

SET @a = 5; EXECUTE stmt1 USING @a; +----+------+ | id | NAME | +----+------+ | 6 | F | 。。。

D.通过profile 查看解析语句的开销

通过profile各种语句执行时间,解析语句花费的时间都在0.01秒以内。可以忽略不计。
所以目前在预处理方面上没有发现明显的优势。

Mysql中prepare预处理怎么用

3.总结

预编译初始的作用:

局限性和实际效果:

从局限性和实际效果来看,目前没有发挥应有的功能。不适合声场环境中使用。

Mysql中prepare预处理怎么用

以上是“Mysql中prepare预处理怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. mysql预处理语句
  2. MySQL中prepare、execute与deallocate怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql prepare

上一篇:http代理IP是什么意思

下一篇:怎么通过重启路由的方法切换IP地址

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》