问:有一张大表,其中按时间字段(TIME_ID)进行表分区(按季度分区),但是如果业务人员做跨季度的大批量数据的查询时,未能走TIME_ID分区索引,导致全表扫描。此种情况该如何处理?

示例解析:

1、我们根据oracle中sh用户自带的SALES表创建一个新的分区表(TIME_ID上建季度分区;插入一个新的字段CREATE_ID,上面不建分区),步骤如下:

create table SALES_1998_part

(

PROD_ID       NUMBER not null,

CUST_ID       NUMBER not null,

TIME_ID       DATE not null,

CREATE_ID     DATE not null

)

partition by range (TIME_ID)

(

partition SALES_Q1_1998 values less than (TO_DATE(' 1998-04-01', 'SYYYY-MM-DD'))

tablespace EXAMPLE

pctfree 0

initrans 1

maxtrans 255

storage

(

initial 64K

minextents 1

maxextents unlimited

),

partition SALES_Q2_1998 values less than (TO_DATE(' 1998-07-01', 'SYYYY-MM-DD'))

tablespace EXAMPLE

pctfree 0

initrans 1

maxtrans 255

storage

(

initial 64K

minextents 1

maxextents unlimited

),

partition SALES_Q3_1998 values less than (TO_DATE(' 1998-10-01', 'SYYYY-MM-DD'))

tablespace EXAMPLE

pctfree 0

initrans 1

maxtrans 255

storage

(

initial 64K

minextents 1

maxextents unlimited

),

partition SALES_Q4_1998 values less than (TO_DATE(' 1999-01-01', 'SYYYY-MM-DD'))

tablespace EXAMPLE

pctfree 0

initrans 1

maxtrans 255

storage

(

initial 64K

minextents 1

maxextents unlimited

)

);

2、向sales_1998_part表中插入值,CREATE_ID的值来处于sales表的TIME_ID值。

insert into sales_1998_part(PROD_ID,CUST_ID,TIME_ID,CREATE_ID)

select PROD_ID,CUST_ID,TIME_ID,TIME_ID from sales

where time_id >= TO_DATE(' 1998-01-01', 'SYYYY-MM-DD')

and time_id < TO_DATE(' 1999-01-01', 'SYYYY-MM-DD');

commit;

select count(*) from sales_1998_part;

3、查询,查看执行计划

1) 使用分区键检索(使用分区键进行索引,会自动在数据存在的区进行检索。因为开始区为2,结束区为3。)

select * from sales_1998_part where TIME_ID >= TO_DATE(' 1998-04-01', 'SYYYY-MM-DD')

and TIME_ID <= TO_DATE(' 1998-10-01', 'SYYYY-MM-DD');

----------------------------------------------------------------------------

| Id  | Operation                | Name            | Rows  | Pstart| Pstop |

----------------------------------------------------------------------------

|   0 | SELECT STATEMENT         |                 | 83425 |       |    |

|   1 |  PARTITION RANGE ITERATOR|                 | 83425 |     2 |  3 |

|*  2 |   TABLE ACCESS FULL      | SALES_1998_PART | 83425 |     2 |  3 |

----------------------------------------------------------------------------

2) 不使用分区键检索(没有使用分区键进行检索,那么则会查询全部的表分区。因为要查询的数据就在2和3分区上,其它的分区数据也被读取了,增大了数据库压力,效率低下。)

select * from sales_1998_part where CREATE_ID >= TO_DATE(' 1998-04-01', 'SYYYY-MM-DD')

and CREATE_ID <= TO_DATE(' 1998-10-01', 'SYYYY-MM-DD');

-----------------------------------------------------------------------

| Id  | Operation           | Name            | Rows  | Pstart| Pstop |

-----------------------------------------------------------------------

|   0 | SELECT STATEMENT    |                 | 86662 |       |       |

|   1 |  PARTITION RANGE ALL|                 | 86662 |     1 |     4 |

|*  2 |   TABLE ACCESS FULL | SALES_1998_PART | 86662 |     1 |     4 |

-----------------------------------------------------------------------

oracle分区表的使用和查询

本文参考了 https://blog.csdn.net/mzglzzc/article/details/46300645 一  创建和使用分区表 1.范围分区(RANGE)范围分区将数据基于范围映射到 ...

oracle使用dblink跨库查询的例子

本文介绍了oracle数据库使用dblink进行跨库查询的方法,oracle dblink跨库查询教程,需要的朋友参考下.   oracle dblink跨库查询 方法一:首先,创建数据库链接: 复制 ...

oracle 开发笔记&OpenCurlyDoubleQuote;跨数据库查询复制”

1.方法一:创建DBL(data base link) CREATE PUBLIC DATABASE LINK 数据链名称 CONNECT TO 登陆用户名 IDENTIFIED BY 密码 USIN ...

Oracle如何实现跨库查询

实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中. 二. 实现方法步骤: 1. 创建存储 ...

Oracle如何实现跨数据库查询

转发:http://www.linuxidc.com/Linux/2012-02/53974.htm 实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库, ...

oracle表空间表分区详解及oracle表分区查询使用方法&lpar;转&plus;整理&rpar;

欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

oracle表分区的,分区操作,分区查询,子分区查询

一.摘要 有关表分区的一些维护性操作: 注:分区根据具体情况选择. 表分区有以下优点: 1.数据查询:数据被存储到多个文件上,减少了I/O负载,查询速度提高. 2.数据修剪:保存历史数据非常的理想. ...

ORACLE 分区表简介

参考链接:http://blog.csdn.net/ziwen00/article/details/9158725ORACLE-分区表 此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分 ...

oracle分区表(整理)

Oracle 表分区 早在8.0.5版本中,Oracle就将范围分区技术引入,现在分区功能已经越来越强大,包括支持扩展分区功能.Interval分区.外键分区.模拟列分区.以及分区建议器等.那么,分区 ...

随机推荐

SQL2043N 与 linux的randomize&lowbar;va&lowbar;space特性

自从数据库服务器从redhat4.6升级到redhat5.5之后,在使用TSM备份的时候偶尔会出现SQL2043N  查看错误: [db2inst1@limt ~]$ db2 ? SQL2043N S ...

Vi问题

,ubuntu11.10下vi编辑器按i,左下方没有出现“输入模式”或者“insert”.在桌面环境下,用ctrl+alt+t调出命令行打开是这样,在第一控制台ctrl+alt+F1下打开,也是这样, ...

J2EE中你必须了解的13种技术规范

1)JDBC(Java Database Connectivity): JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据 ...

shell脚本监控目录下文件被篡改时报警

思路: 目录下文件被篡改的几种可能: 1.被修改 2.被删除 3.新增文件 md5命令详解 参数: -b 以二进制模式读入文件内容 -t 以文本模式读入文件内容 -c 根据已生成的md5值,对现存文件 ...

webpack dev server 配置 启动项目报错Error&colon; listen EADDRINUSE

Error: listen EADDRINUSE 0.0.0.0:5601 它的意思是,端口5601被其他进程占用. 切换端口即可解决问题

使用CSS定位元素实现水平垂直居中效果

总结一下平时使用CSS技巧使元素达到水平居中效果 相对定位(或绝对定位)实现水平垂直居中: element{ position:relative; /*这个属性也可以是absolute*/ width ...

sublime同步文件与siderbar

有时候,打开了sider bar,想和Eclipse.idea一样,每打开一个tab,就可以在左侧的sider bar 目录上面看到我当前的位置,于是找到了一个插件. SyncedSideBar 安装 ...

Trailing Zeroes &lpar;II&rpar; LightOJ - 1090(预处理&plus;前缀和)

求C(n,r)*p^q的后缀零 考虑一下 是不是就是求 10^k*m  的k的最大值 而10又是由2 和 5 组成  所以即是求 2^k1 * 5^k2 * m1 中k1和k2小的那一个数 短板效应嘛 ...

实战MEF(1)一种不错的扩展方式

在过去,我们完成一套应用程序后,如果后面对其功能进行了扩展或修整,往往需要重新编译代码生成新的应用程序,然后再覆盖原来的程序.这样的扩展方式对于较小的或者不经常扩展和更新的应用程序来说是可以接受的,而 ...

&lbrack;Done&rsqb;&lbrack;DUBBO&rsqb; dubbo Thread pool is EXHAUSTED&excl;

异常信息: com.alibaba.dubbo.remoting.ExecutionException: class com.alibaba.dubbo.remoting.transport.disp ...

oracle 跨分区查询效率,Oracle分区表做跨分区查询相关推荐

  1. linux分区的起始扇区,f-fdisk做磁盘分区,起始扇区从2048块开始

    文章目录 First Sector 起始扇区 fdisk工具加分区 fdisk删除分区 First Sector 起始扇区 默认从第2048块扇区开始是因为,由于EFI的兴起,要给EFI 代码留磁盘最 ...

  2. 星淘惠跨境:2023还能做跨境电商吗,跨境电商现状及前景分析

    今年是非常动荡的一年,很多行业都一直处在低谷之中.对于想要寻找副业的卖家而言是个不错的选择,面对即将到来的2023年,跨境电商也将迎来新的发展机会.2023年还能做跨境电商吗,做跨境电商又该要注意什么 ...

  3. oracle使用max提升效率,Oracle调优之利用max与leftjoin来进行不同表之间匹配

    需求 有两个不同的表,A表是基础数据,B表根据A表的某个不重复关键字加其他一些条件查询出一条或几条数据,取其中一条数据.并且利用此数据某个关键字再在B表中查询下一层级数据,最终将A表的对应一条数据,B ...

  4. mysql 字符列做日期分区_mysql 根据日期字段做表分区

    mysql 的表分区有几种类型, list, hash, range等, 今天我们介绍下日期分区, 假如与如下表: 新建mysql分区表CREATE TABLE core(   core_id INT ...

  5. 【跨境电商】个人做跨境电商需要准备多少钱?包括哪些费用?

    2022年仍然有很多小伙伴打算加入跨境电商行业,希望通过跨境电商赚钱.因此很多人在问,个人做跨境电商需要准备多少钱?包括哪些费用?这里我们就来简单聊聊吧! 首先,我们需要知道的是,个人做跨境电商的启动 ...

  6. oracle联合主键效率,Oracle主键与复合主键的性能分析

    总结: 1.主键和复合主键,查询性能相同(索引高度相同,恰当的运用索引). 2.主键和复合主键,(update,insert)性能不同(因为复合主键会用更多的块来创建索引,所以update,inser ...

  7. oracle联合主键效率,oracle 复合主键

    1.为表创建复合主键: 用: alter   table   表名 add   constraint   [主键名称] primary   key(column_name[,column_name]) ...

  8. Oracle 19c 新特性:混合分区表Hybrid partitioned tables强体验

    老张拉呱:thomas zhang,甲骨文云平台事业部资深技术顾问,2008年加入甲骨文公司数据库咨询部门,10+年甲骨文解决方案咨询支持经验,资深系统工程师.Oracle OCM认证专家,具有丰富的 ...

  9. mysql 分区索引失效_分区表的本地索引竟然失效了——ORA-01502

    由于昨天对一个千万级别的分区表做了分区数据交换的操作,因为本表操作太慢,所以将其移出普通表操作后才移回分区表,但是今天又反馈该表的某字段为条件查询速度很慢,自己试了下果真如此,我看了查询语句的执行计划 ...

最新文章

  1. 深度学习与工业互联网安全:应用与挑战
  2. python实现rpc框架_使用Python实现RPC框架
  3. (计算机组成原理)第五章中央处理器-第五节1:指令流水线(定义和表示方法及性能指标)
  4. 关闭mysql权限管理_MySQL系列:用户及权限管理
  5. 判断显卡好坏的步骤、新买显卡装机后不亮解决
  6. elasticsearch中文分词
  7. 谭晓生:如何面对IoT时代的安全新挑战?
  8. 架构高并发方案_架构 - 抖音微博等短视频千万级高可用、高并发架构设计
  9. 搭建网站显示成功后却打不开主页原因
  10. 中国科技论文在线期刊模板出现了格式问题,怎么解决?
  11. 5G NR的新特征—超低时延
  12. Retina、非Retina、点、像素、iPhone分辨率
  13. 物联网协议-CoAP协议简介
  14. 养生怪杰:魏伟的养生之道
  15. 织梦html编辑器不见了,织梦CMS后台文章编辑内容框消失解决教程
  16. 转载:【推荐】云服务器推荐
  17. 小寒也会写程序(五)
  18. Java基础-类的封装,成员变量的访问及隐藏
  19. 自定义滚动条,可用滚轮控制,兼容各浏览器
  20. 仿联想商城laravel实战---2、后端页面搭建(验证码如何在页面中使用)

热门文章

  1. 虚拟主机怎么做云服务器,云服务器怎么弄成虚拟主机
  2. linux mdadm 源码,mdadm详解
  3. mingw-w64-dgn
  4. 736-有两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周
  5. 前端直播插件(PC(FLV) 移动端(M3U8))
  6. 商超便利店如何提高销售额
  7. Swagger 01 入门
  8. 【MATLAB】图像压缩编码(DCT、RLE)
  9. 国内银行CNAPS CODE 查询 苹果开发者,应用内购,需要填写税务相关信息必须的...
  10. (技术贴)铁道部12306网站瘫痪:网络购票技术之罪