小编Ale*_*eks的帖子

按连接表的列排序时提高性能

我有一个包含查找表的外键的父表(简化示例):

CREATE TABLE [dbo].[Parent] (
    [Id] [uniqueidentifier] NOT NULL,
    [LookupId] [uniqueidentifier] NULL
)

CREATE TABLE [dbo].[Lookup] (
    [Id] [uniqueidentifier] NOT NULL,
    [Name] [nvarchar](64) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,该Parent表有超过 1000 万行,而该Lookup表大约有 5000 行。真正的Parent实现有几个这样的对其他表的外键引用,并且这些列中的每一个都可能包含 NULL。

两个示例表的Id列都具有唯一的聚集索引,Parent具有 的非聚集索引LookupIdLookup的非聚集索引Name

我正在运行一个分页查询,我想在结果中包含查找值:-

SELECT
    P.Id,
    L.Name
FROM Parent P
LEFT JOIN Lookup L ON P.LookupId = L.Id 
ORDER BY P.Id
OFFSET 500000 ROWS FETCH NEXT 50 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

这运行得很快,按 排序也是如此P.LookupId。 …

sql-server sql-server-2014 query-performance

7
推荐指数
1
解决办法
431
查看次数