1

我有一个每天创建数百个子分区的数据库。这些分区被命名P_20140116_00001, P_20140116_00002,等。假设这些00001 - 99999是来自多个品牌的特定类型的汽车。

现在,我有一个在一天结束时运行的选择查询,但我觉得它不是最佳的;我确实给出了几个过滤器,其中包括日期。但是,在运行查询之前,我知道数据位于哪些特定的几个分区,但我让查询遍历所有分区(我认为)。我可以通过运行另一个(非常简单/快速)嵌套查询来指定所需的分区。我只是不知道这是否更有效率,但感觉会是这样。下面的一个例子:

例如,我想要统计今天已售出的所有大众汽车。我现在的选择查询仅指定索引字段“品牌”是大众汽车,并且要使用的分区是今天。但是,我知道只有00003, 00103, and 00203types of Volkswagen,这意味着只有数据会导致这 3 个分区中的结果。

我的问题是:

  • 这个查询是否会遍历当天所有其他子分区中的所有数据,即使我知道该查询不会在那里获得任何命中?
  • 我是否可以只针对我知道所需数据所在的分区,通过执行类似的操作P_[sysdate]_[substring in (select type_id from db.types where name = 'Volkswagen')] ?
  • 这会提高查询的效率吗?
  • 有没有比我现在更有效地获得预期结果的另一种方法?

非常感谢您提供的信息!

4

0 回答 0