`
neeleon
  • 浏览: 177588 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle查询指定索引提高查询效率

阅读更多

oracle查询指定索引提高查询效率
一个1600万数据表--短信上行表tbl_sms_mo
结构:
create table tbl_sms_mo
(
 sms_id number,
 mo_id varchar2(50),
 mobile varchar2(11),
 spnumber varchar2(20),
 message varchar2(150),
 trade_code varchar2(20),
 link_id varchar2(50),
 gateway_id number,
 gateway_port number,
 mo_time date default sysdate
);
create index idx_mo_date on tbl_sms_mo (mo_time)
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 1m
    next 1m
    minextents 1
    maxextents unlimited
    pctincrease 0
  );
create index idx_mo_mobile on tbl_sms_mo (mobile)
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64k
    next 1m
    minextents 1
    maxextents unlimited
    pctincrease 0
  );

问题:从表中查询某时间段内某手机发送的短消息,如下sql语句:

select mobile,message,trade_code,mo_time
from tbl_sms_mo
where mobile=’130xxxxxxxx’
and mo_time between to_date(’2006-04-01’,’yyyy-mm-dd hh24:mi:ss’) and to_date(’2006-04-07’,’yyyy-mm-dd hh24:mi:ss’)
order by mo_time desc
返回结果大约需要10分钟,应用于网页查询,简直难以忍受。
 
分 析:
在pl/sql developer,点击“explain plan”按钮(或f5键),对sql进行分析,发现缺省使用的索引是 idx_mo_date。问题可能出在这里,因为相对于总数量1600万数据来说,都mobile的数据是很少的,如果使用idx_mo_mobile比 较容易锁定数据。
 
如下优化:
select /*+ index(tbl_sms_mo idx_mo_mobile) */ mobile,message,trade_code,mo_time
from tbl_sms_mo
where mobile=’130xxxxxxxx’
and mo_time between to_date(’2006-04-01’,’yyyy-mm-dd hh24:mi:ss’) and to_date(’2006-04-07’,’yyyy-mm-dd hh24:mi:ss’)
order by mo_time desc

分享到:
评论

相关推荐

    ORACLE检查找出损坏索引(Corrupt Indexes)的方法详解

    索引是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是一个独立于表的对象,可以存放在与表不同的表空间中。索引记录中存有索引关键字和指向表中数据的指针(地址)。对索引进行的I/O...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),Oracle技术能够帮助提高就业的深度。 其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    5Java性能优化五.zip

    四。数据库优化 对绝大部分应用系统而言。数据库是不可缺少的一部分。JAVA程序能够使用JDBC的方式连接数据库。...能够使用行数据来水平分割,为了提高数据库的查询效率,能够建立有效且事宜的索引

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验,与大家...

    整理Oracle数据库中数据查询优化的一些关键点

    随着一个应用系统中数据的动态增长,数据量变大,数据库查询效率就会有所降低,应用系统的响应速度也随之减慢,尤其对于海量数据的管理和查询问题就更加突出,Oracle查询优化就显得尤为重要。 目前通用的数据库产品...

    Oracle9i的init.ora参数中文说明

    值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 默认值: BINARY nls_currency: 说明: 为 L 数字格式元素指定用作本地货币符号的字符串。该参数的默认值由 NLS_TERRITORY ...

    查询mysql中执行效率低的sql语句的方法

    一些小技巧1. 如何查出效率低的语句?在MySQL下,在启动参数...2. 如何查询某表的索引?可使用SHOW INDEX语句,如: 代码如下: SHOW INDEX FROM [表名] 3. 如何查询某条语句的索引使用情况?可用EXPLAIN语句来看一下

    Oracle事例

    、查看索引被索引的字段 SQL>select * from user_ind_columns where index_name=upper(\'&index_name\'); 11、创建序列 select * from user_sequences; create sequence SEQ_NAME start with 1000 maxvalue ...

    SQL性能优化

     Oracle 优化器无法用上合理索引的情况下,利用 hint 强制指定索引。  使用复合索引且第一个索引字段没有出现在 where 中时,建议使用 hint 强制。 1.6 索引使用优化  建立Plan_Table CREATE TABLE PLAN_TABLE...

    数据库课程设计——图书管理系统.doc

    所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速 度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知 道表 是否有索引、有什么类型的索引. 2。 统一的...

    Toad 使用快速入门

     注意,如果是选择了专门建立toad这个用户的话,需要先修改一下脚本,指定用户的默认表空间和临时表空间。 需要使用Oracle8i 的Profile analyzer,必须运行ToadProfiler.sql  需要加强Toad的安全性,必须...

    SQL培训第一期

    查询指定的左表的所有行,而不仅仅是联接列所匹配的行;如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 1.6.2.2 语法 select A.*,B.* from student_A A left join ...

    sql总结.doc

    (2)Mysql中搜索引擎Innodb(聚簇索引)和Mysiam(非聚簇索引)都采用B+,oracle也采用B+树实现 注:聚簇索引:一张表只能建立一个聚簇索引,以主键建立索引。聚簇索引包括主键索引和二级索引(二级索引是在对非主键...

    DBTSearch软件开发包

    DBTSearch功能简介: 数据库管理系统存储的一般都是结构化数据,长足于数值的计算、查询、... * DBTSearch每秒可索引3000条记录(主要瓶颈为数据库记录读取效率);搜索速度在毫秒级别。 * DBTSearch支持增量更新。

    mysql数据库my.cnf配置文件

    # MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大 sort_buffer_size = ...

    数据库设计准则及方法论.docx

    指定索引的排序属性。 数据库的页大小也是在数据库设计的时候就应该确定的,否则一旦实施就很难更改。对于执行随机行读写操作的OLTP(联机事务处理)应用程序,通常最好使用较小的页大小,这样不需要的行浪费的缓冲池...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例127 将数组中指定索引位置的元素替换 157 实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中...

    完整图文版 阿里巴巴数据产品平台 大数据与云计算技术系列教程 Hadoop之Hive学习笔记(共63页).pdf

    数据库中,通常会针对一个或者几个列建立索引,因此对于少量的特定条件的数据的访问,数据库可以有很高的效率,较低的延迟。由于数据的访问延迟较高,决定了 Hive 不适合在线数据查询。 6. 执行。Hive 中大多数查询...

Global site tag (gtag.js) - Google Analytics