【发布时间】:2011-09-22 13:06:06
【问题描述】:
我已经对数据库中的表进行了规范化,为了对其进行非规范化,我从两个表中创建了一个视图。当我尝试在视图上创建聚集索引时,它不会让我这样做,因为视图是使用左外连接创建的。我使用了左连接,因为我希望 null 值显示在结果视图中,就像之前这篇文章中建议的那样。
Question on join where one column one side is null
表结构和关系与上面链接中描述的非常相似。
我似乎在这里碰壁了,因为我无法将左连接转换为内连接,因为这会排除任何连接列上具有空值的所有记录。我的问题是:
- 为什么不允许在外连接或自连接上建立索引?
- 这种未编入索引的视图是否会影响性能?
- 有人知道这个问题的解决方法吗?
我昨天刚刚完成了 SQL Server 课程,所以不知道如何继续。将不胜感激任何cmets。干杯。
【问题讨论】:
-
您需要 OUTER 表中的列吗?
-
如果你真的需要索引视图,你可以创建(索引)INNER JOIN 一个。然后,您可以将原始(左侧)表 LEFT JOIN 加入此视图,以获得所需的输出,但具有索引视图的性能增益。
-
@gbn & @ypercube:是的,我需要左侧外部表中的列,不幸的是,这就是我需要唯一聚集索引的地方。
标签: sql sql-server view indexed