Oracle 跨表分区查询

来源:互联网 发布:淘宝旅行 编辑:程序博客网 时间:2024/06/09 19:36

http://zhidao.baidu.com/link?url=YlYCmxEotAgyflDtzMIYTMuh9TLhDJ7pCnmsrebUlD1-0xZ6MTftwtfBVqcXS4K-TPo6Yzm0KortMSSIbtPvt_

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

检举|2012-04-17 21:52 IT树儿 | 分类:操作系统/系统故障| 浏览1319次

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

 

2012-04-18 02:10提问者采纳
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个分区更慢)

===========================================================================================

http://www.life-notes.cn/228.html

 

Oracle分区表做跨分区查询

2013年9月21日Tough HOU
原创粉丝点击