gpt4 book ai didi

sql - Oracle 分区修剪与绑定(bind)变量

转载 作者:行者123 更新时间:2023-12-03 18:40:25 25 4
gpt4 key购买 nike

我有一个大(150m+ 行)表,使用 DATE 分区键将其划分为四等分。

当我使用类似...的东西查询表时

SELECT *
FROM LARGE_TABLE
WHERE THE_PARTITION_DATE >= TO_DATE('1/1/2009', 'DD/MM/YYYY')
AND THE_PARTITION_DATE < TO_DATE('1/4/2009', 'DD/MM/YYYY');

...分区修剪工作正常... optomiser 能够意识到它只需要查看单个分区(在这种情况下是 2009 年第一季度)。 EXPLAIN PLAN 显示“PARTITION RANGE SINGLE”

但是,当我将此查询移动到 PL/SQL 并传入与变量相同的日期时,计划显示为“PARTITION RANGE (ITERATOR)”...... 验光师无法理解它只需要查看单个partiiton(大概是因为它在评估计划时没有实际值)。

到目前为止,我发现的唯一解决方法是编写一个 EXECUTE IMMEDIATE 代码,包括 SQL 字符串中的日期,以便分区修剪正常工作。

有没有更好的办法?

最佳答案

我认为您不应该看到绑定(bind)变量的实际性能差异 - 您应该看到“PARTITION RANGE ITERATOR PARTITION: KEY KEY...”的执行计划步骤,这意味着 Oracle 将在执行时确定启动和停止分区.

关于sql - Oracle 分区修剪与绑定(bind)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com