我知道出于性能原因应该避免它,但我试图展示一个条件,它显示为演示如何确保它不会出现。
但是,我最终得到了缺少索引警告,但优化器选择不创建临时索引。
我正在使用的查询是
SELECT
z.a
FROM dbo.t5 AS z WITH(INDEX(0))
WHERE
EXISTS
(
SELECT y.a
FROM dbo.t4 AS y
WHERE y.a = z.a
)
OPTION (MAXDOP 1);
Run Code Online (Sandbox Code Playgroud)
表模式是:
CREATE TABLE dbo.t4
(
a integer NULL,
b varchar(1000) NULL,
p varchar(100) NULL
);
CREATE TABLE dbo.t5
(
a integer NULL,
b varchar(1000) NULL
);
CREATE UNIQUE CLUSTERED INDEX c1
ON dbo.t5 (a);
Run Code Online (Sandbox Code Playgroud)
两个表都有 10,000 行,您可以使用以下方法进行模拟:
UPDATE STATISTICS dbo.t4
WITH
ROWCOUNT = 10000,
PAGECOUNT = 1000;
UPDATE STATISTICS dbo.t5
WITH
ROWCOUNT = …
Run Code Online (Sandbox Code Playgroud) 我有一个包含两列的表,我想计算 Col_B 上(由)Col_A 上的不同值。
我的表
Col_A | Col_B
A | 1
A | 1
A | 2
A | 2
A | 2
A | 3
b | 4
b | 4
b | 5
Run Code Online (Sandbox Code Playgroud)
预期结果
Col_A | Col_B | Result
A | 1 | 3
A | 1 | 3
A | 2 | 3
A | 2 | 3
A | 2 | 3
A | 3 | 3
b | 4 | 2
b | 4 | …
Run Code Online (Sandbox Code Playgroud)