gpt4 book ai didi

oracle - SELECT 需要 100 毫秒; CREATE table as select - 或 - INSERT into select 需要 15 分钟

转载 作者:行者123 更新时间:2023-12-04 15:59:17 33 4
gpt4 key购买 nike

我有一个非常简单的 SELECT *WHERE NOT EXISTS 查询条款。

SELECT *
FROM "BMAN_TP3"."TT_SPLDR_55E63A28_59358" SELECT_TABLE
WHERE NOT EXISTS (SELECT * FROM "BMAN_TP3"."USER_DEF_ATTRIBUTES" EXISTS_TABLE
WHERE "SELECT_TABLE"."UDA_NAME" = "EXISTS_TABLE"."UDA_NAME")

此查询大约需要 100 毫秒来执行和获取 < 2000 条记录。

如果此查询嵌套在 CREATE TABLE AS 中或在 INSERT INTO它运行在 15 分钟 .
CREATE TABLE BMAN_TP3.TT_UDA_TEST TABLESPACE BMAN_TP3_U AS (
SELECT *
FROM "BMAN_TP3"."TT_SPLDR_55E63A28_59358" SELECT_TABLE
WHERE NOT EXISTS (SELECT * FROM "BMAN_TP3"."USER_DEF_ATTRIBUTES" EXISTS_TABLE
WHERE "SELECT_TABLE"."UDA_NAME" = "EXISTS_TABLE"."UDA_NAME")
)

我有一个 UNIQUE INDEXUDA_NAME双方领域 USER_DEF_ATTRIBUTES (备用键)和 TT_SPLDR_55E63A28_59358表。

如果我删除 WHERE NOT EXISTS需要半秒钟。

编辑:

如果我使用
LEFT OUTER JOIN "BMAN_TP3"."USER_DEF_ATTRIBUTES"
ON "SELECT_TABLE"."UDA_NAME" = "USER_DEF_ATTRIBUTES"."UDA_NAME"
WHERE "USER_DEF_ATTRIBUTES"."UDA_NAME" IS NULL

而不是 WHERE NOT EXISTS它在半秒内运行。

我无法解释为什么 WHERE NOT EXISTS太慢了!

用 WHERE NOT EXISTS 解释 CREATE TABLE AS : (15 分钟)

enter image description here

使用左外连接创建表的解释: (500 毫秒)

enter image description here

EXPLAIN for SELECT only with WHERE NOT EXISTS : (100 毫秒)

enter image description here

EXPLAIN for SELECT only with LEFT OUTER JOIN : (100 毫秒)

enter image description here

似乎选择它时进行了相同的操作,但是在创建表时它对 WHERE NOT EXISTS进行了不同的操作。和 LEFT OUTER JOIN

最佳答案

好的,我找到了。

这是 UDA_NAME 上的备用键餐 table 用USER_DEF_ATTRIBUTES .

如果我禁用它并创建一个 UNIQUE INDEX在同一领域,它以 500 毫秒运行。

无论如何,我不确定这种行为的原因。

关于oracle - SELECT 需要 100 毫秒; CREATE table as select - 或 - INSERT into select 需要 15 分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16648013/

33 4 0