合并查询帮助 [英] Merge Query Help

查看:90
本文介绍了合并查询帮助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我需要将一个小表(行数小于100,有时候是* b $ b甚至0行)合并到一个大表(大约40亿行)。我使用大表的PK

作为合并键,但合并会进行表扫描,所以它会永远运行




我检查了大桌子的桌子和PK统计数据,看起来很好。如果我需要检查其他东西,请告诉我。


以下是更多详情

小桌子 - 非分区(节点0)

大表 - 划分为7个逻辑节点(节点1 - 8)


查询:

合并到CARD.VIN_VEH_OPTNS作为使用(<登记/>
选择VEH_IDENT_NBR,OPTN_CD,ERR_FLAG

从ETL.STG_NEWS_VIN_VEH_OPTNS2

其中ERR_FLAG IN( '' N '', '' Y '')) AS B ON(A.VEH_IDENT_NBR =

B.VEH_IDENT_NBR和A.OPTN_CD = B.OPTN_CD AND

A.VEH_OPTN_CD_CSI = 13)

WHEN NOT MATCHED

,则

INSERT(VEH_IDENT_NBR,OPTN_CD,VEH_OPTN_CD_CSI,OPTN_INSTLT_TYP_CD,

PART_SERIAL_NBR,BROADCAST_CD,SOURCE_SYSTEM_CD,SOURCE_DT,

DWH_EFCTV_TIMSTM,DWH_UPD_TIMSTM)价值(B.VEH_IDENT_NBR,
B.OPTN_CD,13,''','''','''',34,当前时间戳,''

2007-02-20 10:39:53'',''2007-02-20 10:39:53' )

ELSE IGNORE

Reorgchk大表的统计数据如下

表统计:

SCHEMA NAME CARD OV NP FP ACTBLK

TSIZE F1 F2 F3 REORG

-------------------------- -------------------------------------------------- ------------

表:CARD.VIN_VEH_OPTNS

CARD VIN_VEH_OPTNS 4.6e + 09 0 3e + 07 3e + 07 - 4.96e

+11 0 97 97 ---

--------------------------- -------------------------------------------------- -----------


指数统计:


SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL

KEYS F4 F5 F6 F7 F8 REORG

------------------------------- -------------------------------------------------- ----------------

表:CARD.VIN_VEH_OPTNS

CARD VVO_IX1 5e + 09 7e + 06 6916 4 10 13755 < br $>
1000 100 80 0 0 0 -----

CA. RD VVO_IX2 5e + 09 7e + 06 287 4 12 8e + 05 1e

+07 100 78 0 0 0 -----

SYSIBM SQL061028160336900 5e + 09 6e + 07 0 5 27 84 5e

+09 98 68 1 0 0 -----

---------------- -------------------------------------------------- -------------------------------


大表索引:

卡片VVO_IX1

D 1

+ DWH_EFCTV_TIMSTM

卡片VVO_IX2

D 2 + DWH_UPD_TIMSTM

+ VEH_OPTN_CD_CSI

SYSIBM SQL061028160336900

p 3 + VEH_IDENT_NBR + OPTN_CD

+ VEH_OPTN_CD_CSI


访问计划:

优化计划:


INSERT

(2)

/ \

DTQ表:

(3)CARD

| VIN_VEH_OPTNS

TBSCAN

(4)

|

TEMP

(5)

|

过滤器

(6)

|

过滤器
(7)

|

TBSCAN

(8)

|

SORT

(9)

|

NLJOIN

(10)

/ \

TBSCAN TBSCAN

(11)(12)

| |

表:TEMP

ETL(13)

STG_NEWS_VIN_VEH_OPTNS2 |

BTQ

(14)

|

TBSCAN

(15)

|

表:

CARD

VIN_VEH_OPTNS

请分享您的想法。

Hello, I need to merge a small table (of rows less than 100,sometimes
even 0 rows) to a big table (of rows around 4 billion). I used the PK
of the big table as merge key but merge does a table scan so it runs
for ever.

I checked the table and PK statistics of the big table and it looks
good. Please let me know if I need to check for something else.

Here are more details
Small table - Non Partitioned ( Node 0)
Big table - Partitioned across 7 logical nodes (Node 1 - 8)

Query:
MERGE INTO CARD.VIN_VEH_OPTNS AS A USING (
SELECT VEH_IDENT_NBR, OPTN_CD, ERR_FLAG
FROM ETL.STG_NEWS_VIN_VEH_OPTNS2
WHERE ERR_FLAG IN (''N'', ''Y''))AS B ON (A.VEH_IDENT_NBR =
B.VEH_IDENT_NBR AND A.OPTN_CD =B.OPTN_CD AND
A.VEH_OPTN_CD_CSI =13)
WHEN NOT MATCHED
THEN
INSERT (VEH_IDENT_NBR, OPTN_CD, VEH_OPTN_CD_CSI, OPTN_INSTLT_TYP_CD,
PART_SERIAL_NBR, BROADCAST_CD, SOURCE_SYSTEM_CD, SOURCE_DT,
DWH_EFCTV_TIMSTM, DWH_UPD_TIMSTM)VALUES (B.VEH_IDENT_NBR,
B.OPTN_CD, 13, '''', '''', '''', 34, Current Timestamp, ''
2007-02-20 10:39:53'', ''2007-02-20 10:39:53'')
ELSE IGNORE
Reorgchk stats of big table is as below
Table statistics:
SCHEMA NAME CARD OV NP FP ACTBLK
TSIZE F1 F2 F3 REORG
----------------------------------------------------------------------------------------
Table: CARD.VIN_VEH_OPTNS
CARD VIN_VEH_OPTNS 4.6e+09 0 3e+07 3e+07 - 4.96e
+11 0 97 97 ---
----------------------------------------------------------------------------------------

Index statistics:

SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL
KEYS F4 F5 F6 F7 F8 REORG
-------------------------------------------------------------------------------------------------
Table: CARD.VIN_VEH_OPTNS
CARD VVO_IX1 5e+09 7e+06 6916 4 10 13755
1000 100 80 0 0 0 -----
CARD VVO_IX2 5e+09 7e+06 287 4 12 8e+05 1e
+07 100 78 0 0 0 -----
SYSIBM SQL061028160336900 5e+09 6e+07 0 5 27 84 5e
+09 98 68 1 0 0 -----
-------------------------------------------------------------------------------------------------

Indexes on Big table:
CARD VVO_IX1
D 1
+DWH_EFCTV_TIMSTM
CARD VVO_IX2
D 2 +DWH_UPD_TIMSTM
+VEH_OPTN_CD_CSI
SYSIBM SQL061028160336900
P 3 +VEH_IDENT_NBR+OPTN_CD
+VEH_OPTN_CD_CSI

Access Plan:
Optimizer Plan:

INSERT
( 2)
/ \
DTQ Table:
( 3) CARD
| VIN_VEH_OPTNS
TBSCAN
( 4)
|
TEMP
( 5)
|
FILTER
( 6)
|
FILTER
( 7)
|
TBSCAN
( 8)
|
SORT
( 9)
|
NLJOIN
( 10)
/ \
TBSCAN TBSCAN
( 11) ( 12)
| |
Table: TEMP
ETL ( 13)
STG_NEWS_VIN_VEH_OPTNS2 |
BTQ
( 14)
|
TBSCAN
( 15)
|
Table:
CARD
VIN_VEH_OPTNS
Please share your thoughts.

推荐答案

Sam Durai写道:
Sam Durai wrote:

你好,我需要合并一个小表(行数少于100,有时是

甚至0行)到一张大桌子(大约40亿行)。我使用大表的PK

作为合并键,但合并会进行表扫描,所以它会永远运行




我检查了大桌子的桌子和PK统计数据,看起来很好。如果我需要检查其他东西,请告诉我。


以下是更多详情

小桌子 - 非分区(节点0)

大表 - 划分为7个逻辑节点(节点1 - 8)


查询:

合并到CARD.VIN_VEH_OPTNS作为使用(

SELECT VEH_IDENT_NBR,OPTN_CD,ERR_FLAG

FROM ETL.STG_NEWS_VIN_VEH_OPTNS2

WHERE ERR_FLAG IN(''N'',''Y'')) AS B ON(A.VEH_IDENT_NBR =

B.VEH_IDENT_NBR和A.OPTN_CD = B.OPTN_CD AND

A.VEH_OPTN_CD_CSI = 13)

WHEN NOT MATCHED

,则

INSERT(VEH_IDENT_NBR,OPTN_CD,VEH_OPTN_CD_CSI,OPTN_INSTLT_TYP_CD,

PART_SERIAL_NBR,BROADCAST_CD,SOURCE_SYSTEM_CD,SOURCE_DT,

DWH_EFCTV_TIMSTM,DWH_UPD_TIMSTM)价值(B.VEH_IDENT_NBR,
B.OPTN_CD,13,''','''','''',34,当前时间戳,' '

2007-02-20 10:39:53'',''2007-02-20 10:39:53'')

ELSE IGNORE

Reorgchk大表的统计数据如下

表统计:

SCHEMA NAME CARD OV NP FP ACTBLK

TSIZE F1 F2 F3 REORG

------------------------------------ -------------------------------------------------- -

表:CARD.VIN_VEH_OPTNS

卡片VIN_VEH_OPTNS 4.6e + 09 0 3e + 07 3e + 07 - 4.96e

+11 0 97 97 ---

------------------------------------- -------------------------------------------------- -


指数统计:


SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL

KEYS F4 F5 F6 F7 F8 REORG

----------------------------------------- -------------------------------------------------- ------

表:CARD.VIN_VEH_OPTNS

CARD VVO_IX1 5e + 0 9 7e + 06 6916 4 10 13755

1000 100 80 0 0 0 -----

CARD VVO_IX2 5e + 09 7e + 06 287 4 12 8e + 05 1e

+07 100 78 0 0 0 -----

SYSIBM SQL061028160336900 5e + 09 6e + 07 0 5 27 84 5e

+ 09 98 68 1 0 0 -----

------------------------------- -------------------------------------------------- ----------------


大桌索引:

CARD VVO_IX1

D 1

+ DWH_EFCTV_TIMSTM

卡片VVO_IX2

D 2 + DWH_UPD_TIMSTM

+ VEH_OPTN_CD_CSI

SYSIBM SQL061028160336900

P 3 + VEH_IDENT_NBR + OPTN_CD

+ VEH_OPTN_CD_CSI


访问计划:

优化计划:


INSERT

(2)

/ \

DTQ表:

(3)CARD

| VIN_VEH_OPTNS

TBSCAN

(4)

|

TEMP

(5)

|

过滤器

(6)

|

过滤器
(7)

|

TBSCAN

(8)

|

SORT

(9)

|

NLJOIN

(10)

/ \

TBSCAN TBSCAN

(11)(12)

| |

表:TEMP

ETL(13)

STG_NEWS_VIN_VEH_OPTNS2 |

BTQ

(14)

|

TBSCAN

(15)

|

表:

CARD

VIN_VEH_OPTNS


请分享您的想法。
Hello, I need to merge a small table (of rows less than 100,sometimes
even 0 rows) to a big table (of rows around 4 billion). I used the PK
of the big table as merge key but merge does a table scan so it runs
for ever.

I checked the table and PK statistics of the big table and it looks
good. Please let me know if I need to check for something else.

Here are more details
Small table - Non Partitioned ( Node 0)
Big table - Partitioned across 7 logical nodes (Node 1 - 8)

Query:
MERGE INTO CARD.VIN_VEH_OPTNS AS A USING (
SELECT VEH_IDENT_NBR, OPTN_CD, ERR_FLAG
FROM ETL.STG_NEWS_VIN_VEH_OPTNS2
WHERE ERR_FLAG IN (''N'', ''Y''))AS B ON (A.VEH_IDENT_NBR =
B.VEH_IDENT_NBR AND A.OPTN_CD =B.OPTN_CD AND
A.VEH_OPTN_CD_CSI =13)
WHEN NOT MATCHED
THEN
INSERT (VEH_IDENT_NBR, OPTN_CD, VEH_OPTN_CD_CSI, OPTN_INSTLT_TYP_CD,
PART_SERIAL_NBR, BROADCAST_CD, SOURCE_SYSTEM_CD, SOURCE_DT,
DWH_EFCTV_TIMSTM, DWH_UPD_TIMSTM)VALUES (B.VEH_IDENT_NBR,
B.OPTN_CD, 13, '''', '''', '''', 34, Current Timestamp, ''
2007-02-20 10:39:53'', ''2007-02-20 10:39:53'')
ELSE IGNORE
Reorgchk stats of big table is as below
Table statistics:
SCHEMA NAME CARD OV NP FP ACTBLK
TSIZE F1 F2 F3 REORG
----------------------------------------------------------------------------------------
Table: CARD.VIN_VEH_OPTNS
CARD VIN_VEH_OPTNS 4.6e+09 0 3e+07 3e+07 - 4.96e
+11 0 97 97 ---
----------------------------------------------------------------------------------------

Index statistics:

SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL
KEYS F4 F5 F6 F7 F8 REORG
-------------------------------------------------------------------------------------------------
Table: CARD.VIN_VEH_OPTNS
CARD VVO_IX1 5e+09 7e+06 6916 4 10 13755
1000 100 80 0 0 0 -----
CARD VVO_IX2 5e+09 7e+06 287 4 12 8e+05 1e
+07 100 78 0 0 0 -----
SYSIBM SQL061028160336900 5e+09 6e+07 0 5 27 84 5e
+09 98 68 1 0 0 -----
-------------------------------------------------------------------------------------------------

Indexes on Big table:
CARD VVO_IX1
D 1
+DWH_EFCTV_TIMSTM
CARD VVO_IX2
D 2 +DWH_UPD_TIMSTM
+VEH_OPTN_CD_CSI
SYSIBM SQL061028160336900
P 3 +VEH_IDENT_NBR+OPTN_CD
+VEH_OPTN_CD_CSI

Access Plan:
Optimizer Plan:

INSERT
( 2)
/ \
DTQ Table:
( 3) CARD
| VIN_VEH_OPTNS
TBSCAN
( 4)
|
TEMP
( 5)
|
FILTER
( 6)
|
FILTER
( 7)
|
TBSCAN
( 8)
|
SORT
( 9)
|
NLJOIN
( 10)
/ \
TBSCAN TBSCAN
( 11) ( 12)
| |
Table: TEMP
ETL ( 13)
STG_NEWS_VIN_VEH_OPTNS2 |
BTQ
( 14)
|
TBSCAN
( 15)
|
Table:
CARD
VIN_VEH_OPTNS
Please share your thoughts.



你/你可以在源代码中有重复吗?

SELECT VEH_IDENT_NBR,OPTN_CD,ERR_FLAG

来自ETL.STG_NEWS_VIN_VEH_OPTNS2

WHERE ERR_FLAG IN (''N'',''Y''))因为你没有在VEH_IDENT_NBR,OPTN_CD

上有一个独特的钥匙,所以B
我推荐SELECT VEH_IDENT_NBR,OPTN_CD,MAX(ERR_FLAG)

来自ETL.STG_NEWS_VIN_VEH_OPTNS2

WHERE ER R_FLAG IN(''N'',''Y'')

GROUP BY VEH_IDENT_NBR,OPTN_CD)AS B


你有关于小的统计数据吗?桌子?


干杯

Serge

-

Serge Rielau

DB2解决方案开发

IBM多伦多实验室

Do/Can you have dups in the source?
SELECT VEH_IDENT_NBR, OPTN_CD, ERR_FLAG
FROM ETL.STG_NEWS_VIN_VEH_OPTNS2
WHERE ERR_FLAG IN (''N'', ''Y''))AS B

assuming you don''t have a UNIQUE key on VEH_IDENT_NBR, OPTN_CD
I recommend SELECT VEH_IDENT_NBR, OPTN_CD, MAX(ERR_FLAG)
FROM ETL.STG_NEWS_VIN_VEH_OPTNS2
WHERE ERR_FLAG IN (''N'', ''Y'')
GROUP BY VEH_IDENT_NBR, OPTN_CD) AS B

Do you have statistics on the small table?

Cheers
Serge
--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab


2月20日下午12:44,Serge Rielau< srie ... @ ca .ibm.comwrote:
On Feb 20, 12:44 pm, Serge Rielau <srie...@ca.ibm.comwrote:

Sam Durai写道:
Sam Durai wrote:

您好,我需要合并一个小表(行数少于100,有时候是b $ b甚至0行)到一张大表(大约40亿行)。我使用大表的PK

作为合并键但合并会进行表扫描,因此它会永远运行


Hello, I need to merge a small table (of rows less than 100,sometimes
even 0 rows) to a big table (of rows around 4 billion). I used the PK
of the big table as merge key but merge does a table scan so it runs
for ever.


我检查了大表的表格和PK统计数据,看起来很好。如果我需要检查其他内容,请告诉我。
I checked the table and PK statistics of the big table and it looks
good. Please let me know if I need to check for something else.


以下是更多详情

小表 - 非分区(节点0)

Big table - 划分为7个逻辑节点(节点1-8)
Here are more details
Small table - Non Partitioned ( Node 0)
Big table - Partitioned across 7 logical nodes (Node 1 - 8)


查询:

MERGE INTO CARD.VIN_VEH_OPTNS AS A使用(

SELECT VEH_IDENT_NBR,OPTN_CD,ERR_FLAG

来自ETL.STG_NEWS_VIN_VEH_OPTNS2

WHERE ERR_FLAG IN(''N'',''Y' '))AS B ON(A.VEH_IDENT_NBR =

B.VEH_IDENT_NBR和A.OPTN_CD = B.OPTN_CD AND

A.VEH_OPTN_CD_CSI = 13)

当NOT MATCHED

,则

INSERT(VEH_IDENT_NBR,OPTN_CD,VEH_OPTN_CD_CSI,OPTN_INSTLT_TYP_CD,

PART_SERIAL_NBR,BROADCAST_CD,SOURCE_SYSTEM_CD,SOURCE_DT,

DWH_EFCTV_TIMSTM,DWH_UPD_TIMSTM)价值(B.VEH_IDENT_NBR,

B.OPTN_CD,13,'''','' '','''',34,当前时间戳,''

2007-02-20 10:39:53'',''2007-02-20 10:39:53'' )

ELSE IGNORE
Query:
MERGE INTO CARD.VIN_VEH_OPTNS AS A USING (
SELECT VEH_IDENT_NBR, OPTN_CD, ERR_FLAG
FROM ETL.STG_NEWS_VIN_VEH_OPTNS2
WHERE ERR_FLAG IN (''N'', ''Y''))AS B ON (A.VEH_IDENT_NBR =
B.VEH_IDENT_NBR AND A.OPTN_CD =B.OPTN_CD AND
A.VEH_OPTN_CD_CSI =13)
WHEN NOT MATCHED
THEN
INSERT (VEH_IDENT_NBR, OPTN_CD, VEH_OPTN_CD_CSI, OPTN_INSTLT_TYP_CD,
PART_SERIAL_NBR, BROADCAST_CD, SOURCE_SYSTEM_CD, SOURCE_DT,
DWH_EFCTV_TIMSTM, DWH_UPD_TIMSTM)VALUES (B.VEH_IDENT_NBR,
B.OPTN_CD, 13, '''', '''', '''', 34, Current Timestamp, ''
2007-02-20 10:39:53'', ''2007-02-20 10:39:53'')
ELSE IGNORE


Reorgchk大表的统计数据如下

表统计:

SCHEMA NAME CARD OV NP FP ACTBLK

TSIZE F1 F2 F3 REORG

-------------- -------------------------------------------------- ------------------------

表:CARD.VIN_VEH_OPTNS

卡片VIN_VEH_OPTNS 4.6e + 09 0 3e + 07 3e + 07 - 4.96e

+11 0 97 97 ---

--------------- -------------------------------------------------- -----------------------
Reorgchk stats of big table is as below
Table statistics:
SCHEMA NAME CARD OV NP FP ACTBLK
TSIZE F1 F2 F3 REORG
----------------------------------------------------------------------------------------
Table: CARD.VIN_VEH_OPTNS
CARD VIN_VEH_OPTNS 4.6e+09 0 3e+07 3e+07 - 4.96e
+11 0 97 97 ---
----------------------------------------------------------------------------------------


指数统计:
Index statistics:


SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL

KEYS F4 F5 F6 F7 F8 REORG

----------------------------------------- -------------------------------------------------- ------

表:CARD.VIN_VEH_OPTNS

卡片VVO_IX1 5e + 09 7e + 06 6916 4 10 13755

1000 100 80 0 0 0 -----

CARD VVO_IX2 5e + 09 7e + 06 287 4 12 8e + 05 1e

+07 100 78 0 0 0 ---- -

SYSIBM SQL061028160336900 5e + 09 6e + 07 0 5 27 84 5e

+09 98 68 1 0 0 -----

-------------------------------------------------- -----------------------------------------------
SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL
KEYS F4 F5 F6 F7 F8 REORG
-------------------------------------------------------------------------------------------------
Table: CARD.VIN_VEH_OPTNS
CARD VVO_IX1 5e+09 7e+06 6916 4 10 13755
1000 100 80 0 0 0 -----
CARD VVO_IX2 5e+09 7e+06 287 4 12 8e+05 1e
+07 100 78 0 0 0 -----
SYSIBM SQL061028160336900 5e+09 6e+07 0 5 27 84 5e
+09 98 68 1 0 0 -----
-------------------------------------------------------------------------------------------------


大表索引:

CARD VVO_IX1

D 1

+ DWH_EFCTV_TIMSTM

CARD VVO_IX2

D 2 + DWH_UPD_TIMSTM

+ VEH_OPTN_CD_CSI

SYSIBM SQL061028160336900

P 3 + VEH_IDENT_NBR + OPTN_CD

+ VEH_OPTN_CD_CSI
Indexes on Big table:
CARD VVO_IX1
D 1
+DWH_EFCTV_TIMSTM
CARD VVO_IX2
D 2 +DWH_UPD_TIMSTM
+VEH_OPTN_CD_CSI
SYSIBM SQL061028160336900
P 3 +VEH_IDENT_NBR+OPTN_CD
+VEH_OPTN_CD_CSI


访问计划:

优化计划:
Access Plan:
Optimizer Plan:


INSERT

(2)

/ \\ *

DTQ表:

(3)CARD

| VIN_VEH_OPTNS

TBSCAN

(4)

|

TEMP

(5)

|

过滤器

(6)

|

过滤器
(7)

|

TBSCAN

(8)

|

SORT

(9)

|

NLJOIN

(10)

/ \

TBSCAN TBSCAN

(11)(12)

| |

表:TEMP

ETL(13)

STG_NEWS_VIN_VEH_OPTNS2 |

BTQ

(14)

|

TBSCAN

(15)

|

表:

CARD

VIN_VEH_OPTNS
INSERT
( 2)
/ \
DTQ Table:
( 3) CARD
| VIN_VEH_OPTNS
TBSCAN
( 4)
|
TEMP
( 5)
|
FILTER
( 6)
|
FILTER
( 7)
|
TBSCAN
( 8)
|
SORT
( 9)
|
NLJOIN
( 10)
/ \
TBSCAN TBSCAN
( 11) ( 12)
| |
Table: TEMP
ETL ( 13)
STG_NEWS_VIN_VEH_OPTNS2 |
BTQ
( 14)
|
TBSCAN
( 15)
|
Table:
CARD
VIN_VEH_OPTNS


请分享您的想法。
Please share your thoughts.



你/你可以在源代码中有重复吗?

SELECT VEH_IDENT_NBR,OPTN_CD,ERR_FLAG

来自ETL .STG_NEWS_VIN_VEH_OPTNS2

WHERE ERR_FLAG IN(''N'',''Y''))B B B B B B B B b b b b b b b b b b b b b b b b b b b b b b b b b在VEH_IDENT_NBR键,OPTN_CD

我建议选择VEH_IDENT_NBR,OPTN_CD,MAX(ERR_FLAG)

。从ETL.STG_NEWS_VIN_VEH_OPTNS2

,其中ERR_FLAG IN( '' N'',''Y'')

GROUP BY VEH_IDENT_NBR,OPTN_CD)AS B


你有关于小桌子的统计数据吗?


干杯

Serge

-

Serge Rielau

DB2解决方案开发

IBM多伦多实验室


Do/Can you have dups in the source?
SELECT VEH_IDENT_NBR, OPTN_CD, ERR_FLAG
FROM ETL.STG_NEWS_VIN_VEH_OPTNS2
WHERE ERR_FLAG IN (''N'', ''Y''))AS B

assuming you don''t have a UNIQUE key on VEH_IDENT_NBR, OPTN_CD
I recommend SELECT VEH_IDENT_NBR, OPTN_CD, MAX(ERR_FLAG)
FROM ETL.STG_NEWS_VIN_VEH_OPTNS2
WHERE ERR_FLAG IN (''N'', ''Y'')
GROUP BY VEH_IDENT_NBR, OPTN_CD) AS B

Do you have statistics on the small table?

Cheers
Serge
--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab



感谢您查看此问题。我们不能在

VEH_IDENT_NBR,OPTN_CD,ERR_FLAG上复制。我确实已经更新了小的

表中的统计数据,并且大多数时候这个表都是空的,所以我不确定

Unique Index是否会有所帮助。

Thanks for looking into the issue. We cannot have duplicates on
VEH_IDENT_NBR, OPTN_CD, ERR_FLAG. I do have updated stats on the small
table and most of the time this table would be empty so I''m not sure
whether Unique Index would be of help.


Sam Durai写道:
Sam Durai wrote:

感谢您查看此问题。我们不能在

VEH_IDENT_NBR,OPTN_CD,ERR_FLAG上复制。我确实已经更新了小的

表中的统计数据,并且大多数时候这个表都是空的,所以我不确定

Unique Index是否会有所帮助。
Thanks for looking into the issue. We cannot have duplicates on
VEH_IDENT_NBR, OPTN_CD, ERR_FLAG. I do have updated stats on the small
table and most of the time this table would be empty so I''m not sure
whether Unique Index would be of help.



不是所有三个,但这没有帮助。 Imporatnt是否你可以

有两个(VEH_IDENT_NBR,OPTN_CD)和不同的ERR_FLAG。

,因为你加入了(VEH_IDENT_NBR,OPTN_CD)。

无论如何:尝试重写,看看它对计划的作用。应该让b $ b变得简单得多。 JOIN上方的所有goo都应该消失(并且

希望在此过程中删除tablecan)。

-

Serge Rielau

DB2解决方案开发

IBM多伦多实验室

Not on all three, but that doesn''t help. Imporatnt is whether you could
have two (VEH_IDENT_NBR, OPTN_CD) with different ERR_FLAG.
because you join on (VEH_IDENT_NBR, OPTN_CD).
Anyway: try my rewrite and see what it does to the plan. It should
become much simpler. All the goo above the JOIN should go away (and
hopefully in the process remove the tablescan).
--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab


这篇关于合并查询帮助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆