gpt4 book ai didi

performance - 如何优化分区表的oracle查询?

转载 作者:行者123 更新时间:2023-12-02 21:52:14 28 4
gpt4 key购买 nike

我有一个按日期(按天)分区的表和字段(包括日期字段)的本地索引。如果我进行查询:

SELECT * FROM table t WHERE t.fdate = '30.06.2011'

它很快就实现了,但是当我制作时

SELECT * FROM table t WHERE EXTRACT(month from t.fdate) = 6 AND EXTRACT(year from t.fdate) = 2011

大约需要 200 秒完成。

如何优化这个查询?我可能需要在 EXTRACT(从日期开始的月份)和 EXTRACT(从日期开始的年份)上创建本地索引?

最佳答案

由于您在日期字段上有索引,因此您应该以可以使用该索引的方式编写查询。这对于 EXTRACT 函数来说是不可能的,因为 Oracle 必须遍历所有数据并计算每行的条件以确定其是否匹配。

如果您有特定日期或日期范围,则可以使用日期索引。就您而言,您正在寻找一系列日期。所以查询可以写成:

SELECT * FROM TABLE T
WHERE T.FDATE BETWEEN TO_DATE('1.6.2011', 'DD.MM.YYYY') AND TO_DATE('30.6.2011', 'DD.MM.YYYY');

关于performance - 如何优化分区表的oracle查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7089410/

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