· 7 years ago · Oct 03, 2018, 08:36 AM
1SELECT ID1, ID2
2FROM two_col_key_test WITH (FORCESCAN)
3WHERE ID1 NOT IN
4(
5N'1', N'2',N'3', N'4', N'5',
6N'6', N'7', N'8', N'9', N'10',
7N'11', N'12',N'13', N'14', N'15',
8N'16', N'17', N'18', N'19', N'20'
9)
10AND (ID1 = N'FILLER TEXT' AND ID2 >= N'' OR (ID1 > N'FILLER TEXT'))
11ORDER BY ID1, ID2 OFFSET 12000000 ROWS FETCH FIRST 1 ROW ONLY
12OPTION (MAXDOP 1);
13
14SELECT ID1, ID2
15FROM two_col_key_test
16WHERE ID1 NOT IN
17(
18N'1', N'2',N'3', N'4', N'5',
19N'6', N'7', N'8', N'9', N'10',
20N'11', N'12',N'13', N'14', N'15',
21N'16', N'17', N'18', N'19', N'20'
22)
23AND (ID1 = N'FILLER TEXT' AND ID2 >= N'' OR (ID1 > N'FILLER TEXT'))
24ORDER BY ID1, ID2 OFFSET 12000000 ROWS FETCH FIRST 1 ROW ONLY
25OPTION (MAXDOP 1);
26
27drop table if exists dbo.two_col_key_test;
28
29CREATE TABLE dbo.two_col_key_test (
30 ID1 NVARCHAR(50) NOT NULL,
31 ID2 NVARCHAR(50) NOT NULL,
32 FILLER NVARCHAR(50),
33 PRIMARY KEY (ID1, ID2)
34);
35
36DROP TABLE IF EXISTS #t;
37
38SELECT TOP (4000) 0 ID INTO #t
39FROM master..spt_values t1
40CROSS JOIN master..spt_values t2
41OPTION (MAXDOP 1);
42
43
44INSERT INTO dbo.two_col_key_test WITH (TABLOCK)
45SELECT N'FILLER TEXT' + CASE WHEN ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) > 8000000 THEN N' 2' ELSE N'' END
46, ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
47, NULL
48FROM #t t1
49CROSS JOIN #t t2;
50
51SELECT ID1, ID2
52FROM two_col_key_test
53ORDER BY ID1, ID2 OFFSET 12000000 ROWS FETCH FIRST 1 ROW ONLY
54OPTION (MAXDOP 1);