小编Cri*_*ilă的帖子

性能重构:尽量避免表扫描

我有一个包含连接几个表的查询的过程,但我遇到了一些性能问题。

主表(这是一个巨大的表)有一个 PK 和一些 NC 索引。

CREATE TABLE [dbo].[TableA]
(
    [TableAID] [bigint] NOT NULL,
    [UserID] [int] NOT NULL,
    [IP1] [tinyint] NOT NULL,
    [IP2] [tinyint] NOT NULL,
    [IP3] [tinyint] NOT NULL,
    [IP4] [tinyint] NOT NULL
    CONSTRAINT [PK_TableA] 
        PRIMARY KEY CLUSTERED  ([TableAID] ASC)
) ON [PRIMARY]


CREATE NONCLUSTERED INDEX [idx_1] ON [dbo].[TableA] 
(
    [UserID] ASC
)


CREATE NONCLUSTERED INDEX [idx_2] ON [dbo].[TableA] 
(
    [IP1] ASC,
    [IP2] ASC,
    [IP3] ASC,
    [IP4] ASC
)
Run Code Online (Sandbox Code Playgroud)

这是性能不佳的查询:

SELECT DISTINCT a.UserID, a.IP1, a.IP2, a.IP3, a.IP4
    FROM [dbo].[TableA] …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server index-tuning query-performance

6
推荐指数
2
解决办法
3668
查看次数