首页 > 解决方案 > SQL 'case when' vs 'where' 效率

问题描述

哪个更有效:

Select SUM(case when col2=2 then col1 Else 0 End) From myTable 

或者

Select SUM(Col1) From myTable where col2=2

还是它们的速度相同?

标签: sqlsql-serverperformance

解决方案


第二个更高效:

  • 它通常会处理更少的行(假设存在非“2”值),因为在调用聚合函数之前行将被忽略。
  • 它允许优化器利用索引。
  • 它允许优化器利用表分区。

在某些情况下,它们可能会花费相同的时间,尤其是在小桌子上。


推荐阅读