相关疑难解决方法(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万
查看次数

在SQL Server 2005中"select*from table"vs"select colA,colB,etc from table"

为一篇冗长的帖子道歉,但我需要发布一些代码来说明问题.

灵感来自问题*什么是不使用选择的原因,我决定指出一些我之前注意到的select*行为的观察结果.

让我们的代码说明一切:

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[starTest]') AND type in (N'U'))
DROP TABLE [dbo].[starTest]
CREATE TABLE [dbo].[starTest](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [A] [varchar](50) NULL,
    [B] [varchar](50) NULL,
    [C] [varchar](50) NULL
) ON [PRIMARY]

GO

insert into dbo.starTest(a,b,c)
select 'a1','b1','c1'
union all select 'a2','b2','c2'
union all select 'a3','b3','c3'

go
IF  EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[vStartest]'))
DROP VIEW [dbo].[vStartest]
go
create view dbo.vStartest as
select * from dbo.starTest …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005 views

14
推荐指数
1
解决办法
3056
查看次数