【发布时间】:2011-01-05 11:37:12
【问题描述】:
如果我在 SQL Server 中定义了这样的视图:
CREATE View V1
AS
SELECT *
FROM t1
INNER JOIN t2 ON t1.f1 = t2.f2
ORDER BY t1.f1
我应该期望两者之间的性能差异
SELECT * FROM V1 WHERE V1.f1 = 100
只是避开视线,像这样
SELECT *
FROM t1
INNER JOIN t2 ON t1.f1 = t2.f2
WHERE t1.f1 = 100
ORDER BY t1.f1
?
除了需要集中复杂查询之外,我们没有任何理由使用视图。
谢谢
【问题讨论】:
-
ORDER BY在视图中不起作用。有一些问题(TOP 100 PERCENT),但是随着优化器的改进,它变得毫无意义。如果您需要特定的订单,则必须在最外层的查询中指定它。 -
在使用 where 子句 WHERE t1.f1 = 100 后使用 order by t1.f1 没有任何意义。即使结果集包含多行,此 order by 也无济于事
标签: sql-server performance views