SELECT *
FROM dbo.Numbers a
INNER JOIN
(
SELECT TOP 10 Number
FROM dbo.Numbers
) b ON a.Number = b.Number
OPTION ( MERGE JOIN );
GO
SELECT *
FROM dbo.Numbers a
INNER JOIN
(
SELECT DISTINCT TOP 10 Number
FROM dbo.Numbers
) b ON a.Number = b.Number
OPTION ( MERGE JOIN );
您是从Azure SQL 数据仓库的
EXPLAIN
计划或新的SSMS 计划功能中获取此信息吗?请提供。DISTINCT
在“盒子产品”引擎 (SQL Server 2017 14.0.3008.27) 中,我可以使用针对列存储表的关键字重现将多对多 MERGE 连接转换为一对多连接。我不能保证这在 Azure SQL 数据仓库中表现相同,但是它不会应用于所有查询:此处提供完整脚本。我的结果: