【发布时间】:2017-04-06 09:06:34
【问题描述】:
SEL COUNT(*) FROM DATABASE_A.QF
计数 = 37,011,480
SEL COUNT(*) FROM DATABASE_A_INC.QFA
计数 = 368,454
查询 1
DELETE A
FROM
DATABASE_A.QF A,
DATABASE_A_INC.QFA B
WHERE
A.Q_NUM = B.Q_NUM
AND
A.ID = B.ID
AND
A.LOCATION_ID=1;
上面的 DELETE 查询遇到了 SPOOL 空间问题。
所以我改写成另一种形式。
查询 2
DELETE FROM DATABASE_A.QF A WHERE (Q_NUM,ID) IN
(SELECT Q_NUM,ID FROM DATABASE_A_INC.QFA B)
AND LOCATION_ID=1;
已处理 368454 行。 DELETE 命令完成
我的问题:
- 查询 1 和 2 在逻辑上是否相同?他们是否删除了相同的记录?
- 如何在不遇到 SPOOL 的情况下验证查询 1 的计数 空间问题?我尝试了一个通用的 COUNT 函数。我尝试在一定程度上增加 spool 空间。
- 有没有更好的方法来检查查询 1 的计数?
【问题讨论】:
-
完全不重复。完全不同的问题。
标签: sql performance teradata