在MySQL中明智的SUM VS COLUMN明智的SUM

时间:2013-08-07 09:20:56

标签: php mysql performance

我有一个tableA,它包含以下结构

enter image description here

我将此结构修改为如下所示的tableB以减少行数,类别是固定长度

enter image description here

假设在修改为新结构后,tableA中有21万个数据,tableB仅包含70k行

在某些情况下,我想将所有值汇总到表格中,

QUERY1: SELECT SUM(val) AS total FROM tableA;

vs

QUERY2: SELECT SUM(cate1+cate2+cate3) AS total FROM tableB;

与QUERY2相比,QUERY1的执行速度更快。

与tableA相比,

tableB包含更少的行

根据我的预期,QUERY2更快,但QUERY1是最快的。

帮助我理解为什么QUERY2中的性能会降低?

2 个答案:

答案 0 :(得分:1)

MySQL经过优化,可加快关系操作。加快MySQL可以执行的其他操作并没有太多的努力。 Cate1 + Cate2 + Cate3是一个完全合法的操作,但没有什么特别的关系。

就数据的关系模型而言,Table1实际上比Table2更简单,即使Table1有更多的行。值得注意的是,Table1符合第一范式,但Table2没有。这三列实际上是一个重复的组,即使它看起来像是不是。

所以First Normal形式在性能方面(大多数时候)对你有好处。

答案 1 :(得分:0)

在你的第一个查询中,mysql只需要进行求和。 (1个过程)

在第二个查询中,mysql首先需要沿三列添加算术,然后对结果进行求和。(2过程)。