【发布时间】:2018-04-15 10:04:22
【问题描述】:
我有一个按列 A 的分区表。分区 Z 的表有 800000 条记录,分区 V 有 5000000 条(更多)。我检查了所有索引并且处于活动状态。
表 ALL_TAB_PARTITIONS 中的分区看起来没问题。
我在分区 Z 中执行了一个查询,它挂起,当它执行 5 小时时我不得不终止它,但在分区 V 中运行非常快,1.2 秒。
我还观察到不同分区中的相同查询使用表的不同索引。
我不知道为什么。
有人知道为什么会发生这种情况吗?
提前谢谢你。
【问题讨论】:
-
检查两个分区的查询执行计划。
-
你看过你的执行计划了吗?您最近是否对表格进行过统计?
-
是的,执行计划显示分区 V 中查询的成本为 11258、基数 1 和字节 315,分区 Z 中的成本为 3、基数 1 和 2368 字节。统计数据有最近在桌子上运行。可能是为了统计?
-
@JaviHernandez 执行计划中有很多细节,而且计划可能出错的方式有很多。运行
explain plan for select ...;然后运行 select * from table(dbms_xplan.display);并将整个结果包含在问题中会有所帮助。 -
@BrianLeach 对不起,我可以问你一个问题吗?对表运行统计信息后是否需要从分区更新索引?
标签: sql oracle performance indexing partitioning