MS SQL 查询结果因列集而异
MS SQL query results vary depending on set of columns
请帮我找到以下问题的解决方案。
我有 2 个问题:
SELECT tu
FROM testview1
WHERE tu = 1;
SELECT *
FROM testview1
WHERE tu = 1;
第一个查询 returns 21 行,第二个 - 36。
testview1 是一个有 3 个列的视图,它们都是整数。
CREATE VIEW testview1 AS
SELECT
rn,
tu,
id
FROM t1
UNION ALL
SELECT
rn,
tu,
id
FROM t2
造成这种差异的原因是什么?
您的视图有 top ()
而没有 order by
,因此此 select 的结果取决于服务器选择 return 您的行的顺序。
由于请求的列不同,因此两个查询产生了 2 个不同的计划,并且服务器在 "right" 计划中选择了 ODRERED
索引扫描,在 "wrong" 计划中选择了 NOT ORDERED
。
因此,不同的行进一步过滤,最终的行数不同
请帮我找到以下问题的解决方案。 我有 2 个问题:
SELECT tu
FROM testview1
WHERE tu = 1;
SELECT *
FROM testview1
WHERE tu = 1;
第一个查询 returns 21 行,第二个 - 36。 testview1 是一个有 3 个列的视图,它们都是整数。
CREATE VIEW testview1 AS
SELECT
rn,
tu,
id
FROM t1
UNION ALL
SELECT
rn,
tu,
id
FROM t2
造成这种差异的原因是什么?
您的视图有 top ()
而没有 order by
,因此此 select 的结果取决于服务器选择 return 您的行的顺序。
由于请求的列不同,因此两个查询产生了 2 个不同的计划,并且服务器在 "right" 计划中选择了 ODRERED
索引扫描,在 "wrong" 计划中选择了 NOT ORDERED
。
因此,不同的行进一步过滤,最终的行数不同