【发布时间】:2014-08-31 03:49:29
【问题描述】:
所以我们正在构建这个应用程序,其中数据的检索基于小型模块化查询。所以对于一个产品来说,它会是这样的:
$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 <...>
从programming 的角度来看,第一个选项使我们更容易处理数据、混合和匹配构建单独的流程/用户体验等。我们担心的是 - 从performance 的角度来看,这是否会成为一个问题产品在数十万行中运行?
【问题讨论】:
-
如果您按 product_id 过滤,并且在每个表上都有索引,我认为运行 3 个单独的查询比只运行一个查询更糟糕。但是您应该比较所有案例的执行计划并自己查看。将一些测试数据放在这些表上并进行测试。
标签: mysql sql performance join scalability