相关疑难解决方法(0)

索引视图和左连接一劳永逸

我正在使用MSSQL Server 2008 R2,当我偶然发现索引视图时,我正在尝试优化我的视图.不幸的是,我的大多数视图都使用了索引视图不支持的左外连接.经过一系列的研究,我感到很困惑,最好的办法是解决这个问题.我看到它的方式,我有以下选择:

1)使用技巧将左连接转换为内连接,以使用"OR(IsNull(a)AND IsNull(b))"模拟左连接

我在几个地方找到了这个解决方案,但提到了性能损失.

2)将左连接转换为内连接,并用空guid(00000000-0000-0000-0000-000000000000)替换可空列的空值,并在右表中添加一个匹配guid的行.

这似乎是性能最明显的,但是对于每一行都是空的浪费似乎是空的.

3)将我的观点分为两种观点.第一个视图是我的大部分逻辑,即Indexable.第二个视图派生自第一个视图并添加左连接.

这里的想法是,通过索引的基本视图可能会有性能提升.甚至查询派生的视图至少会获得一些性能优势.

4)不要索引我的观点

是否会使视图比上述任何选项更具性能?

5)我没有想到的想法

我将我的基本场景编写如下:

   CREATE TABLE [dbo].[tbl_Thumbnails](
        [ThumbnailId] [uniqueidentifier] NOT NULL,
        [Data] [image] NULL,
        [Width] [smallint] NOT NULL,
        [Height] [smallint] NOT NULL
     CONSTRAINT [PK_tbl_Thumbnails] PRIMARY KEY CLUSTERED 
    (
        [ThumbnailId] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    GO

    CREATE TABLE [dbo].[tbl_Tags](
        [TagId] [uniqueidentifier] NOT NULL,
        [ThumbnailId] [uniqueidentifier] NULL …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

25
推荐指数
1
解决办法
1万
查看次数

关于连接的问题,其中一列一侧为空

我有两张桌子,存储候选人和他们的成绩.简单的加入可以通过匹配ID等获得所有候选人及其成绩.

例如:

Alan    C
George  A
Run Code Online (Sandbox Code Playgroud)

等等.但是:

Nina
Run Code Online (Sandbox Code Playgroud)

Nina的成绩是无效的,因为她没有参加考试.

如何获得如下输出?

Alan   C
George A
Nina
Run Code Online (Sandbox Code Playgroud)

尼娜虽然没参加考试,但仍然如此.我尝试过空检查,然后执行某些操作等.

谢谢

sql t-sql

2
推荐指数
1
解决办法
884
查看次数

标签 统计

sql ×2

sql-server ×1

sql-server-2008 ×1

t-sql ×1