Zuz*_* JH 4 sql sql-server performance
哪个更有效率:
Select SUM(case when col2=2 then col1 Else 0 End) From myTable
Run Code Online (Sandbox Code Playgroud)
或者
Select SUM(Col1) From myTable where col2=2
Run Code Online (Sandbox Code Playgroud)
或者它们的速度相同吗?
毫无疑问,第二个应该更快。这是因为“访问”的概念。访问是指查询需要检索以产生结果的数据量。它对数据库引擎优化器决定包含在执行计划中的“操作符”有很大的影响。
安全一些例外,第一个查询需要访问所有表行,然后计算结果,包括与案例无关的行。
第二个查询仅引用计算结果所需的特定行。因此,它具有更快的潜力。为了实现它,索引的存在至关重要。例如:
create index ix1 on myTable (col2);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它将仅访问与过滤谓词匹配的行子集col2 = 2。
| 归档时间: |
|
| 查看次数: |
8770 次 |
| 最近记录: |