Mysql API 查询优化 为什么要选用预处理语

Mysql API 查询优化 为什么要选用预处理语,第1张

使用预处理语句会比多次执行查询效率高的多,原因如下:

1. 服务器只需要解析一次查询,这节约了解析和其他的开销

2. 因为服务器缓存了一部分执行计划,所以它只需要执行某些优化步骤一次

3. 通过二进制发送参数比通过ASCII 码要快的多。比如,通过二进制发送DATE 类型的参数只需要3 个字节,但通过ASCII 码发送要10 个字节。节约的效果对于BLOB 和TEXT 类型最为显著,因为它们可以成块的发送,而不是一个个的发送。二进制协议也帮助客户端节约了内存,同时减少了网络开销和数据从本身的类型转换为非二进制协议的开销。

4. 整个查询不会被发送到服务器,只有参数才会被发送,这减少了网络流量。

5. Mysql 直接把参数保存在服务器的缓冲区内,不需要在内存中到处copy 数据

6. 预处理语句对安全性也有好处,它不需要在应用程序中对值进行转义和加引号,这更加方便,并且减少了遭SQL 注入攻击的可能性。

这就相当于一个方法,已经加载了。只需要你填写一些参数,就能获得相应的结果。这样就大大增加了同样式sql的适用性,性能提高。如果是不同样式的sql,用这种方式反而会降低性能。

如果有不明白请留言。

$pdo = new PDO(//配置)

$sql = 'SELECT field FROM table WHERE field=:condition'

$r = $pdo->prepare($sql)    

$r->execute(array(':condition'=>$param)) 

//这里把参数直接以数组的形式传进去,其余工作prepare会自动帮你完成

//prepare的工作就是预先处理sql语句预防可能出现的注入,不然怎么会叫预处理呢


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5901997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存