gpt4 book ai didi

mysql - 大型单连接查询与多个较小的连接查询

转载 作者:行者123 更新时间:2023-11-30 00:04:51 25 4
gpt4 key购买 nike

因此,我们正在构建这个应用程序,其中数据检索基于小型模块化查询。所以对于一个产品来说,它会是这样的:

$product = $this->product->getProductData($prod_id); //get main product record
$locations = $this->locations->getAvailableLocations($prod_id); //sale locations
$comments = $this->feedback->getFeedback($prod_id,'COMMENTS'); //user comments

另一方面,我们也可以这样做:$this->getAllProductData($id)它本质上有一个 SQL:

get * from product_data 
left join locations on <...>
left join comments on <...>

编程的角度来看,第一个选项使我们更容易处理数据、混合和匹配构建单独的流程/用户体验等。我们关心的是 - 来自性能 从角度来看,当产品运行数十万行时,这会成为问题吗?

最佳答案

每次执行 SQL 语句都会产生相关开销。数据包发送到服务器,解析 SQL 文本,验证语句在语法上正确(关键字、逗号、括号等),验证语句在语义上正确(标识符引用表、列、函数等存在并且用户具有足够的权限) ,评估可能的执行计划并选择最佳计划,执行计划(获取锁,访问缓冲区中的数据等),具体化结果集(元数据和值),然后返回给调用者,释放锁,清理资源等。在客户端,存在检索结果集、获取行和关闭语句的开销。

一般来说,使用较少的语句检索所需的实际数据会更有效,但如果该元素返回大量不需要的信息,则效果不佳。如果我们只需要 20 行,那么我们在查询上添加 LIMIT 20。如果我们只需要特定 Product_id 的行,则 WHERE Product_id = 42

当我们看到重复执行本质上相同的语句的紧密循环时,这是一个明显的迹象,表明开发人员正在处理数据 RBER(逐行处理),而不是作为一组数据。

底线,这取决于用例。有时,运行几个较小的语句来代替一个庞大的语句会更有效。

关于mysql - 大型单连接查询与多个较小的连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665208/

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