因此,我们正在构建此应用程序,其中数据的检索基于小型模块化查询。因此,对于一个产品它会是这样的:大单连接查询与多个小连接查询
$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个分离的查询将会比只有一个更糟糕。但是你应该比较所有情况下的执行计划并亲自查看。在这些表上放一些测试数据并对其进行测试。 –