PHP PDO:缓存的mysql查询准备了多长时间?

如何利用准备好的声明表现?我知道如果我把它放在一个循环中,这样的东西可能会有好处:
SELECT `Name` FROM `Hobbits` WHERE `ID` = :ID;

我已经读过,使用预处理语句循环比没有循环更快,但是其他准备好的语句会略微降低性能.那么 – 这个循环有多大?

如果我在代码的开头运行一个复杂的SQL查询并在最后用一个不同的参数重复它 – 第二个查询会运行得更快吗? (我们为每个页面加载使用单个连接).缓存查询是否有限制,所以我最好立即重复我的查询

如何使用完全相同的参数执行整个脚本两次(重新加载页面或2个用户)?

准备好的查询将提供给sql服务器,sql服务器将对其进行解析并可能已准备好执行计划.然后,您基本上会为这些已分配的资源分配一个id,并且可以通过填写语句中的空白来执行此预准备语句.您可以根据需要随时运行此语句,数据库不必重复解析和执行计划,这可能会提高速度.

只要你不丢弃这个陈述,这个陈述将“保持准备”多久就没有硬性超时.它不是缓存,它是sql服务器上的已分配资源.至少只要数据库驱动程序在sql API中使用本机预处理语句.认情况下,PDO不会这样做,除非您将PDO :: ATTR_EMULATE_PREPARES设置为false.

但是,在脚本执行结束时,所有这些资源将始终被释放,它们不会在不同的页面加载中持久存在.除此之外,sql服务器可能会或可能不会缓存查询及其结果一段时间,无论客户端脚本如何.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...