【发布时间】:2018-07-11 18:58:37
【问题描述】:
我有一个配置表 - tblConfig 如下所示
-------------------------------------------
| SiteCode | CompanyCode | CompanyGroup |
-------------------------------------------
| AISH78 | SPWI85 |SFTIT |
-------------------------------------------
还有一个超过 10K 行的表 tblData。
我想编写一个查询来返回 tblData 表行以及 tblConfig 表的列。
例如:
---------------------------------------------------------------------------
| 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 之后我几乎没有其他查询)。
对于上述情况,交叉连接有什么替代方法吗? 请帮忙。
【问题讨论】:
-
你的两张表之间真的没有任何共同的列吗?
-
创建一个存储过程,返回前n条记录,根据输入参数返回不同的结果?
-
tblConfig有多大? -
如果
tblConfig真的只有一行(并且永远只有一行),那么Cross Join不会出现性能问题。真正的问题是什么?当您不交叉加入此表时,您是否看到更好的性能? -
@Squirrel - tblConfig 只有 1 行 3-4 列
标签: sql-server sql-server-2014 cross-join