在SQL中计算结果的最佳方法在哪里?

时间:2016-02-12 13:39:31

标签: mysql sql postgresql db2

我搜索最佳实践以改进我们在MODEL中的应用程序(在MCV模式上)

为了收集少量数据,我们可以在SQL请求上或在MODEL上进行。

Ex:关于SQL的agregate数据(我的agregateresult是别名:result_year)

SELECT
  id AS product_id,
  name AS product_name,
  ISNULL(quantity_january, 0) + ISNULL(quantity_february, 0) + ISNULL(quantity_march, 0) as result_year
FROM
  product_sale

我的模型可以这样定义(phpfriendly):

class productResult{
    // define one var by sql column.
    $this->resultYear = null;

    function productResult(){
        //here I make the link between SQL and PHP.
    }

    // define function for get the sql result.
    public function getResultYear(){
        return $this->resultYear;
    }
}

// I get just the my result.
$productResult->getResultYear();

或者我想用其他方法进行处理:

例如:从我的SQL获取所有数据并在模型上进行agregate(在函数中获取我的值)

SELECT
  id AS product_id,
  name AS product_name,
  quantity_january,
  quantity_february
  quantity_march
FROM
  product_sale


class productResult{
    // define one var by sql column.
    $this->quantityJanuary= null;
    $this->quantityFebruary= null;
    $this->quantityMarch= null;

    function productResult(){
        //here I make the link between SQL and PHP.
    }

    // define function for get the sql result.
    public function getResultYear(){
        return $this->quantityJanuary
             +$this->quantityFebruary
             +$this->quantityMarch;
    }
}
// I get just my resulyt.
$productResult->getResultYear();

此代码只是用于解释我的问题:我搜索最佳方式创建应用程序的位置......

  • 对于agregate数据,SQL总是比模型(PHP或其他语言)更快吗?
  • 在什么情况下,模型(PHP或其他)中的计算能否优于SQL?
  • 有没有什么好的做法可以将SQL恢复为模型?

PS:这不是PHP TAG的问题,因为它不是关于PHP的问题,而是关于所有语言模型中的SQL(PHP / JAVA / ASP / C#...等......)。 / p>

非常感谢!!

1 个答案:

答案 0 :(得分:2)

通常,SQL旨在在聚合数据上运行良好。

此外,如果您仅传递聚合数据而不是所有数据来构建聚合,则网络使用率会降低。

因此,如果可能的话,请让sql引擎聚合您的数据并将其提取为聚合数据。相反,如果您已经在应用程序服务器(java,php或其他内容)上拥有内存中的所有数据,则可以直接在内存上聚合数据。