Table 具有单行(多列)的交叉连接的替代方案

Alternative for Cross Join with a Table having Single Row (Multiple Columns)

我有一个 table 用于配置 - tblConfig 如下所示

-------------------------------------------
| SiteCode  |  CompanyCode | CompanyGroup |
-------------------------------------------
| AISH78    |  SPWI85      |SFTIT         |
-------------------------------------------

还有一个 table 超过 10K 行的 tblData。

我想将查询写入 return tblData Table 行以及 tblConfig tables.

的列

例如:

---------------------------------------------------------------------------
| SiteCode  |  CompanyCode | CompanyGroup | tblDataCol1 | tblDataCol2|.....etc
---------------------------------------------------------------------------
| AISH78    |  SPWI85      |SFTIT         |    1        |  XY       | ....etc
----------------------------------------------------------------------------
| AISH78    |  SPWI85      |SFTIT         |    2        |  MN       | ....etc
----------------------------------------------------------------------------
| AISH78    |  SPWI85      |SFTIT         |    3        |  PQ       | ....etc
----------------------------------------------------------------------------
...
...
...
..etc

我知道我可以将交叉连接查询写成

 Select * from tblConfig
 Cross Join tblData

但是上面的查询影响了性能,因为 tblData 有超过 10K 行。 (在这个 cross Join 之后我几乎没有其他疑问)。

对于上述情况,是否有交叉连接的替代方法。? 请帮忙。

嗯...您不需要使用交叉联接。您也可以使用常规的内部联接。但是,可能是优化器最终将其更改为交叉连接 - 如果性能符合您的要求,您将不得不尝试:

DECLARE @t1 TABLE(
  SiteCode NVARCHAR(10),
  CompanyCode NVARCHAR(10),
  CompanyGroup NVARCHAR(10)
)

INSERT INTO @t1 VALUES ('AISH78','SPWI85', 'SFTIT')


DECLARE @t2 TABLE(
  c1 NVARCHAR(10),
  c2 NVARCHAR(10),
  c3 NVARCHAR(10)
)

INSERT INTO @t2 VALUES ('AAA','BBB', 'CCC'), ('DDD','EEE', 'FFF'), ('GGG','HHH', 'III')

SELECT t1.*, t2.*
  FROM @t2 t2
  JOIN @t1 t1 ON t1.SiteCode = t1.SiteCode