通过缓存或分区加速 Oracle Select
Speed Up Oracle Select by Cache or partition
我有一个 100+ 百万行的 oracle MV。我们的大部分代码都针对此视图调用,因此我想保持语法完整并确保这些调用非常快。
由于业务逻辑,我知道不到 100 万行就足以应答 99% 以上的所有呼叫。假设这百万行在分区 1 中。我想知道:
- Oracle 是否(可能)自己发现并通常 returns 缓存结果而不是实际扫描 table?
- 我可以告诉 Oracle 始终先检查第一个分区,然后按它喜欢的方式继续。
- 我还能做什么吗?
如果 (1) 是这种情况,那么我想我们已经尽可能快了。
否则我怎么能让 (2) 工作?还是有 (3) 个我还没有想到?
你能帮忙吗?
问候,
彼得
部分答案 2)
你可以对 Oracle 说你想从哪个分区获取 select 数据:
SELECT *
FROM partitioned_table PARTITION (partition_name) s
WHERE ....;
我想,我想做的事情是不可能的。我 post APC 发表评论,因为它似乎满足了我的需求:
装甲运兵车:
不太可能。通常,分区修剪(仅搜索 Oracle 知道具有所有必需记录的分区)仅适用于使用分区键的查询。可能如果您有一些与日期绝对相关的东西并且您收集直方图统计数据,那么 Oracle 可能能够建立相关性并且仍然在一个分区中查找。但我不能确定,因为我只使用过分区,其键始终是查询的一部分(我过着多么狭窄的生活)。 – APC 8 月 21 日 10:24
我有一个 100+ 百万行的 oracle MV。我们的大部分代码都针对此视图调用,因此我想保持语法完整并确保这些调用非常快。
由于业务逻辑,我知道不到 100 万行就足以应答 99% 以上的所有呼叫。假设这百万行在分区 1 中。我想知道:
- Oracle 是否(可能)自己发现并通常 returns 缓存结果而不是实际扫描 table?
- 我可以告诉 Oracle 始终先检查第一个分区,然后按它喜欢的方式继续。
- 我还能做什么吗?
如果 (1) 是这种情况,那么我想我们已经尽可能快了。 否则我怎么能让 (2) 工作?还是有 (3) 个我还没有想到?
你能帮忙吗? 问候, 彼得
部分答案 2)
你可以对 Oracle 说你想从哪个分区获取 select 数据:
SELECT *
FROM partitioned_table PARTITION (partition_name) s
WHERE ....;
我想,我想做的事情是不可能的。我 post APC 发表评论,因为它似乎满足了我的需求:
装甲运兵车: 不太可能。通常,分区修剪(仅搜索 Oracle 知道具有所有必需记录的分区)仅适用于使用分区键的查询。可能如果您有一些与日期绝对相关的东西并且您收集直方图统计数据,那么 Oracle 可能能够建立相关性并且仍然在一个分区中查找。但我不能确定,因为我只使用过分区,其键始终是查询的一部分(我过着多么狭窄的生活)。 – APC 8 月 21 日 10:24