我只是想知道准备好的查询是如何工作的。我正在使用PHP和MySQL。
我知道准备好的查询会编译查询,然后重复使用只需更改参数,这样可以节省时间。但是编译的查询有多长时间有效?在什么时候必须重新评估?是否只要PHP脚本运行?或者只要与数据库的连接存在?在这种情况下,持久连接会对它产生任何影响吗?
答案 0 :(得分:4)
ryeguy,他们持续了连接的长度。根据MySQL手册:
预准备语句特定于创建它的会话。如果在不取消分配先前准备的语句的情况下终止会话,则服务器会自动解除分配。
如果您没有使用持久连接,那么当您的脚本完成执行时(或者您明确地释放它或关闭连接),这将被解除分配。如果使用持久连接,那么它将使用相同的持久连接在多个PHP会话中保持不变。
答案 1 :(得分:0)
据我所知,只要存储它的变量在范围内,准备好的查询就会“持续”。我想可能有一些方法可以缓存准备好的查询供以后使用,但我不知道MySQL是否会这样做。
答案 2 :(得分:0)
hobodave是对的,它们只是在它们创建的会话中持续。
还有另外一件事要考虑:
<强> 7.5.5。 MySQL查询缓存
注意强>
查询缓存不用于 准备好的陈述如果你正在使用 准备好的陈述,考虑一下 这些陈述不会得到满足 通过查询缓存。