对不起,我编辑了查询。
很抱歉,是否曾经有人问过我,但是我找不到任何答案。哪个更有效:
Select SUM(case when col2=2 then col1 Else 0 End) From myTable
OR
Select SUM(Col1) From myTable where col2=2
还是它们的速度相同?
答案 0 :(得分:1)
第二个效率更高:
在某些情况下,它们似乎花费了相同的时间,尤其是在小桌子上。
答案 1 :(得分:1)
肯定第二个应该更快。这是因为“访问权限” 的概念。访问是指查询需要检索以产生结果的数据量。这对数据库引擎优化器决定将其包括在执行计划中的“运算符”有很大影响。
除某些例外情况外,第一个查询需要访问所有表行,然后计算结果,包括与案例无关的行。
第二个查询仅引用计算结果所需的特定行。因此,它具有更快的潜力。为了实现它,索引的存在至关重要。例如:
create index ix1 on myTable (col2);
在这种情况下,它将仅访问与过滤谓词col2 = 2
相匹配的行的子集。