gpt4 book ai didi

PHP PDO : How long are prepared mysql queries cached?

转载 作者:可可西里 更新时间:2023-11-01 07:27:29 24 4
gpt4 key购买 nike

如何利用准备好的语句来提高性能?我知道如果我把它放在一个循环中,这样的事情可能会有所帮助:

SELECT `Name` FROM `Hobbits` WHERE `ID` = :ID;

我读到过循环 with 准备好的语句比循环没有准备好的语句要快,但是否则准备好的语句会稍微降低性能。那么 - 这个循环有多大?

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

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

最佳答案

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

只要您不丢弃声明,就没有关于声明“保持准备状态”多长时间的硬超时。它不是缓存,它是 SQL 服务器上的分配资源。至少只要您的数据库驱动程序在 SQL API 中使用 native 准备好的语句。例如 PDO 默认情况下这样做,除非您将 PDO::ATTR_EMULATE_PREPARES 设置为 false

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

关于PHP PDO : How long are prepared mysql queries cached?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com