一尘不染

用什么替换视图中的左联接,以便可以拥有索引视图?

sql

我已经在数据库中对表格进行了规范化,并对其进行了规范化,所以我从两个表中创建了一个视图。当我尝试在视图上创建聚簇索引时,它不允许我这样做,因为视图是使用左外部联接创建的。我之所以使用左联接,是因为我希望在结果视图中显示空值,就像在之前的文章中所建议的那样。

表的结构和关系与以上链接中描述的非常相似。

我似乎在这里碰壁,因为我无法将左联接转换为内部联接,因为这将排除所有联接列上具有空值的所有记录。我的问题是:

  1. 为什么在外部联接或自我联接上不允许索引?
  2. 这种非索引视图是否会对性能产生影响?
  3. 有人知道解决此问题的方法吗?

我昨天刚完成一门SQL Server课程,所以不知道如何进行。将不胜感激任何评论。干杯。


阅读 123

收藏
2021-03-17

共1个答案

一尘不染

这里有一个“解决方法”
其中涉及检查NULL联接并NULL
在表中具有表示值

空值

INSERT INTO Father (Father_id, Father_name) values(-255,'No father')

加盟

JOIN [dbo].[son] s on isnull(s.father_id, -255) = f.father_id
2021-03-17