准备好的查询在服务器端“持续”多长时间?

时间:2009-07-17 00:02:33

标签: php mysql odbc

我只是想知道准备好的查询是如何工作的。我正在使用PHP和MySQL。

我知道准备好的查询会编译查询,然后重复使用只需更改参数,这样可以节省时间。但是编译的查询有多长时间有效?在什么时候必须重新评估?是否只要PHP脚本运行?或者只要与数据库的连接存在?在这种情况下,持久连接会对它产生任何影响吗?

3 个答案:

答案 0 :(得分:4)

ryeguy,他们持续了连接的长度。根据MySQL手册:

  

预准备语句特定于创建它的会话。如果在不取消分配先前准备的语句的情况下终止会话,则服务器会自动解除分配。

如果您没有使用持久连接,那么当您的脚本完成执行时(或者您明确地释放它或关闭连接),这将被解除分配。如果使用持久连接,那么它将使用相同的持久连接在多个PHP会话中保持不变。

答案 1 :(得分:0)

据我所知,只要存储它的变量在范围内,准备好的查询就会“持续”。我想可能有一些方法可以缓存准备好的查询供以后使用,但我不知道MySQL是否会这样做。

答案 2 :(得分:0)

hobodave是对的,它们只是在它们创建的会话中持续。

还有另外一件事要考虑:

  

<强> 7.5.5。 MySQL查询缓存

     

注意

     

查询缓存不用于   准备好的陈述如果你正在使用   准备好的陈述,考虑一下   这些陈述不会得到满足   通过查询缓存。