【发布时间】:2021-04-07 22:37:28
【问题描述】:
我正在编写如下 SQL。它每次都会导致扫描表“TBLA”,这是一个大表。由于表格设计,我没有任何使用索引的选项。我怎样才能优化下面的,这样我就不必一次又一次地扫描表。我还需要保留 TBLB 的条件,即每个连接中的 TBLB 有不同的条件。感谢任何帮助
提前致谢:)
Sel SUB1.COLX,
SUB1.COLY,
SUB1.COLZ,
SUB2.COLX,
SUB2.COLY,
SUB2.COLZ,
SUB3.COLX,
SUB3.COLY,
SUB3.COLZ
FROM
TBLA
LEFT JOIN
(SELECT COLX , COLY, COLZ FROM TBLB WHERE rec='123' ) SUB1
ON TBLA.SK=SUB1.SK
LEFT JOIN
(SELECT COLX , COLY, COLZ FROM TBLB WHERE rec='456' ) SUB2
ON TBLA.SK=SUB2.SK
LEFT JOIN
(SELECT COLX , COLY, COLZ FROM TBLB WHERE rec='789' ) SUB3
ON TBLA.SK=SUB3.SK
【问题讨论】:
-
样本数据和预期结果将帮助我们为您提供帮助,但您似乎想要一个数据透视/条件聚合?
-
然而,那些
ON子句也不起作用。例如,SUB1没有定义列SK。 -
请发布完整的 DDL,包括索引
-
@Larnu 如果
TBLB非常大并且索引在(rec, SK)上,OP使用的方法可能会更好,我们需要先查看DDL -
SQL Server 还是 Teradata?在这些连接中实际上是同一张表
TBLB?
标签: sql query-optimization teradata