Optimization

如何在 Azure 數據倉庫中實現多對一合併聯接

  • April 4, 2018

我在 azure 數據倉庫中有一個合併連接。我估計的執行計劃目前顯示為多對多連接。我想知道是否可以實現多對一的加入。目前我正在努力想一種方法來做到這一點,因為不支持主鍵和唯一約束。是否有任何可用的東西可以讓我告訴它其中一個表將始終包含唯一值。

您是從Azure SQL 數據倉庫的EXPLAIN計劃或新的SSMS 計劃功能中獲取此資訊的嗎?請提供。

DISTINCT在“盒子產品”引擎(SQL Server 2017 14.0.3008.27)中,我可以使用關鍵字針對列儲存表重現將多對多 MERGE 連接轉換為一對多連接。我不能保證這在 Azure SQL 數據倉庫中的行為會相同,但它不適用於所有查詢:

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 );

此處提供完整腳本。我的結果:

一對多

引用自:https://dba.stackexchange.com/questions/203007