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
我有一个 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