![]() |
1
7
当我最初写这个答案的时候,我说其中一列上的索引可以创建一个比其他答案性能更好的查询(并提到Dan Fuller的)。然而,我的想法并不是100%正确。事实是,如果没有计算列或索引(物化)视图,将需要进行完整的表扫描 必修的 相同的 桌子
创造条件 我所指的最佳实践是将一列移动到比较运算符的一侧,如下所示:
我还要指出
这一原则在计算较大的单位(如小时、天或月)时尤为重要。A.
|
![]() |
2
5
但是你可以这样做
作为旁注,这实际上是将DATEDIFF移动到where语句中,以确定它的第一个定义位置。在where语句中的列上使用函数会导致索引的使用效率降低,如果可能的话应该避免使用,但是如果必须使用datediff,那么就必须这样做! |
![]() |
3
3
除了使其“工作”,还需要使用索引 使用带索引的计算列或带索引的视图,否则将进行表扫描。当你排得足够多时,你会感到 疼痛 慢扫描!
创建视图&索引:
|
![]() |
4
2
您必须使用函数而不是列别名-与count(*)等PITA相同。 |
![]() |
5
1
作为替代,您可以使用 computed columns . |
![]() |
sqlrobert · SQL-如何查找不包含特定字段值的一组记录 1 年前 |
![]() |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
Java · 使用交叉应用同时显示两列 3 年前 |