0 0

请问oracle查询优化问题!5

1.现在有3张表A,B,C
A表有1000万条数据
B表有1000万条数据
C表有1万条数据。
2.现在对A,B两张表进行过分区表,使用范围分区通过时间分区的,给分区做过local索引。
3.现在统计查询语句:
select count(*) from A a
left join B b on a.id = b.aid
left join C c on a.cno= c.no
where a.flag=1;
查询时间需要60秒以上;
4.数据查询语句:
select *  from
(
a.id,
a.name,
a.sex,
b.aid,
b.no,
b.part,
c.servername
from A a
left join B b on a.id = b.aid
left join C c on a.cno= c.no
   where
            o.flag = 1
        order by
            o.createtime desc
)
where
        rownum <= 20;
查询时间相当的慢;
求优化方案!!!!!

2012年8月16日 11:16

10个答案 按时间排序 按投票排序

0 0

这个SQL怎么优化都不行,没有较好的筛选条件

2012年8月17日 16:05
0 0

1。给createtime 建立索引.
2.先进行数据过滤再进行联接;(select * from a where rownum<20 order by createtime) left join b ... left join c ....

2012年8月17日 13:02
0 0

木有查询计划, 木有IO&CPU统计, 木有详细的表结构。所有的优化方法都是蒙的。。。

2012年8月16日 23:27
0 0

执行计划 表上的索引的情况都是解决问题的重要情报

2012年8月16日 21:58
0 0

把sql的解释计划发上来看看呗
光说也不知道什么原因慢

2012年8月16日 14:16
0 0

1.先缩小表的数据后,在连表查询
2.在分区表上加上where条件 其汇总要加上分区字段,不然分区白分了
2.建立索引

2012年8月16日 13:25
0 0

如果数据很多,就不要统计所有的数据,只需要统计行数就可以了

select count(*) from table ...

改成

select count(1) from table ...

令:同意并学习楼上各位的意见

2012年8月16日 12:59
0 0

聊下我能想到的。

[list]

  • 分区。按时间分区的,但你的查询中有没有出现时间相关字段。估计你也知道,这分区对于这两个查询都是在帮倒忙。local索引也一样只会拖后腿。特别是你的where里的字段如果是local索引的话,更是拖后腿。话说,如果只有1000万,还不至于需要分区吧?当然也要看实际情况。
  • 索引。where字段全局索引好些。空间换效率。
  • count。改成
  • SELECT COUNT(*) FROM
      (SELECT * FROM A WHERE a.flag=1;
      ) a LEFT JOIN B b ON a.id = b.aid LEFT JOIN C c ON a.cno = c.no
    

    试试看。我是不报什么希望,哈哈,取决于那个flag的情况。
  • 第二个查询里面的o是a的笔误吗?
  • 还可以试试 with ... as。比如

  • WITH aaa AS
    SELECT * FROM A WHERE a.flag=1;
    
    SELECT *
    FROM
      (SELECT a.id,
        a.name,
        a.sex,
        b.aid,
        b.no,
        b.part,
        c.servername
      FROM aaa
      LEFT JOIN B b
      ON a.id = b.aid
      LEFT JOIN C c
      ON a.cno     = c.no
      ORDER BY a.createtime DESC
      )
    WHERE rownum <= 20; 
    

    还是取决于那个flag的情况。
  • 最后看执行计划吧。
  • [/list]

    2012年8月16日 11:49
    0 0

    大表关联的时候要尽量先缩小关联的范围,比如你上面的语句可以把where条件放里面去先缩小范围:

    select count(*)
      from A a
      left join B b
        on a.id = b.aid
       and a.flag = 1
      left join C c
        on a.cno = c.no
       and a.flag = 1;
    

    下面那条长长的也一样搞法

    看看有没有什么效果

    2012年8月16日 11:37
    0 0

    大表关联是噩梦,设计阶段应该要充分考虑数据量的问题啊。

    2012年8月16日 11:29

    相关推荐

      Oracle查询优化改写技巧与案例

      《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

      Oracle查询优化改写技巧与案例2.zip

      《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

      《Oracle查询优化改写技巧与案例》PDF版本下载.txt

      根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...

      Oracle查询优化改写 技巧与案例.pdf

      Oracle查询优化改写 技巧与案例.pdf

      Oracle查询优化改写-技巧与案例

      Oracle查询优化是数据库管理中的关键技能,尤其是在处理大型数据集时,有效的查询优化能显著提升系统性能,降低资源消耗。本书“Oracle查询优化改写-技巧与案例2.0”聚焦于这一主题,旨在为数据库管理员(DBA)和开发...

      【oracle】oracle查询优化改写

      在Oracle中,查询优化主要依赖于查询改写和优化器的选择。 查询改写是Oracle数据库优化策略的一部分,它允许数据库在执行查询前对SQL语句进行重写,以选择更高效的方式。这通常涉及利用索引、连接顺序调整、子查询...

      Oracle查询优化改写 技巧与案例

      在Oracle数据库管理中,查询优化是一项至关重要的任务,它直接影响到系统的性能和效率。Oracle查询优化改写技巧与案例涉及到如何通过改进SQL语句、利用索引、调整表设计和数据库参数来提升查询速度,降低资源消耗。...

      oracle查询优化改写技巧与案例

      《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

      oracle查询优化pdf

      Oracle查询优化是数据库管理中的关键环节,它涉及到提高数据检索速度、降低系统资源消耗和提升整体应用性能。这本书“Oracle查询优化PDF”很可能是对Oracle数据库查询优化技术的深入探讨,涵盖了一系列相关主题,...

      Oracle查询优化改写 技巧与案例 .pdf

      Oracle查询优化是数据库管理中的关键环节,尤其是在大型企业级应用中,高效的查询性能直接影响到系统的整体性能和用户体验。Oracle数据库提供了多种工具和技术来帮助我们优化SQL查询,提高数据检索速度,减少资源...

      Oracle 多表查询优化

      Oracle 多表查询优化 Oracle 多表查询优化是指在 Oracle 数据库管理系统中,为了提高多表查询的效率和性能采取的一些优化策略和技术。在 Oracle 中,多表查询是指从多个表中检索数据的操作。这种操作可能会占用大量...

      Oracle查询优化改写 技巧与案例_高清带书签版本

      《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

      Oracle查询优化技巧

      Oracle查询的优化技巧,对大数据量查询的时候可以节省不少时间。

      Oracle 查询优化,个人练习

      Oracle查询优化是数据库管理中的关键技能,尤其是在处理大型数据集时,有效的查询优化能显著提升系统性能,降低资源消耗。本实践主要关注如何利用Oracle数据库的特性与工具来改进SQL查询的执行效率。 首先,了解...

      oracle 查询优化改写

      在Oracle数据库管理中,查询优化是一项至关重要的任务,它直接影响到数据库系统的性能和效率。"Oracle查询优化改写"是一个专业领域,旨在通过调整SQL语句的结构和逻辑,提高查询速度,降低资源消耗,从而提升整体...

      oracle海量查询的数据优化!

      oracle海量查询的数据优化! 建立“适当”的索引是实现查询优化的首要前提。

    Global site tag (gtag.js) - Google Analytics