Oracle 跨表分区查询,比没有表分区更慢吗?

我有一个大表,表分区是按照每天一个创建的。在使用的时候,我要查询一个时间段的数据(大概15天),也就是说需要跨15个表分区,这样查询起来比没有表分区会更慢吗?比15天创建一个表分区又怎样?求高手指点!!!

1、你这种情况,分区表上的查询比没分区的表快。
访问数据有两种方式,一是全表扫,二是先走索引、再通过索引返回的rowid访问表。
不分区表全表扫时,分区表快。分区表扫描的只是15个分区而不是全表,很显然扫描的数据量小,表里存的数据越多这个优势越明显。
不分区表走索引的时,仍然是分区表快。oracle会自动用扫描15个分区的方案来代替先索引后表这种2步的方案,由于分区后省去访问索引因此访问的数据量小,而且扫描分区是使用db file scattered read一次读多个数据块,速度比先索引后表的db file sequential read一次读一个数据块快很多,每天的数据越多这个优势越明显。
如果考虑开并行,分区表会比没分区的表快更多。

2、根据你的查询来看,我觉得15天1个分区不如1天1个分区。
比如查1号到15号15天的数据,1天1个分区需要访问1号到15号的数据;查2号到16号15天的数据,1天1个分区需要访问2号到16号的数据。
但是如果15天1个分区:
查1号到15号15天的数据,15天1个分区需要访问1号到15号的数据;查2号到16号15天的数据,15天1个分区需要访问1号到30号的数据,也就是说查询时间段跨2个分区时,比上面的方案多访问1倍的数据量,自然会慢不少。(如果每天的数据较多,15天1个分区,通过索引访问2号到16号的数据会比全扫1号到30号2个分区更慢)

如有帮助请采纳
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答