-
请问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个答案 按时间排序 按投票排序
-
1。给createtime 建立索引.
2.先进行数据过滤再进行联接;(select * from a where rownum<20 order by createtime) left join b ... left join c ....2012年8月17日 13:02
-
如果数据很多,就不要统计所有的数据,只需要统计行数就可以了
select count(*) from table ...
改成
select count(1) from table ...
令:同意并学习楼上各位的意见2012年8月16日 12:59
-
聊下我能想到的。
[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
-
大表关联的时候要尽量先缩小关联的范围,比如你上面的语句可以把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
相关推荐
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...
Oracle查询优化改写 技巧与案例.pdf
Oracle查询优化是数据库管理中的关键技能,尤其是在处理大型数据集时,有效的查询优化能显著提升系统性能,降低资源消耗。本书“Oracle查询优化改写-技巧与案例2.0”聚焦于这一主题,旨在为数据库管理员(DBA)和开发...
在Oracle中,查询优化主要依赖于查询改写和优化器的选择。 查询改写是Oracle数据库优化策略的一部分,它允许数据库在执行查询前对SQL语句进行重写,以选择更高效的方式。这通常涉及利用索引、连接顺序调整、子查询...
在Oracle数据库管理中,查询优化是一项至关重要的任务,它直接影响到系统的性能和效率。Oracle查询优化改写技巧与案例涉及到如何通过改进SQL语句、利用索引、调整表设计和数据库参数来提升查询速度,降低资源消耗。...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
Oracle查询优化是数据库管理中的关键环节,它涉及到提高数据检索速度、降低系统资源消耗和提升整体应用性能。这本书“Oracle查询优化PDF”很可能是对Oracle数据库查询优化技术的深入探讨,涵盖了一系列相关主题,...
Oracle查询优化是数据库管理中的关键环节,尤其是在大型企业级应用中,高效的查询性能直接影响到系统的整体性能和用户体验。Oracle数据库提供了多种工具和技术来帮助我们优化SQL查询,提高数据检索速度,减少资源...
Oracle 多表查询优化 Oracle 多表查询优化是指在 Oracle 数据库管理系统中,为了提高多表查询的效率和性能采取的一些优化策略和技术。在 Oracle 中,多表查询是指从多个表中检索数据的操作。这种操作可能会占用大量...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
Oracle查询的优化技巧,对大数据量查询的时候可以节省不少时间。
Oracle查询优化是数据库管理中的关键技能,尤其是在处理大型数据集时,有效的查询优化能显著提升系统性能,降低资源消耗。本实践主要关注如何利用Oracle数据库的特性与工具来改进SQL查询的执行效率。 首先,了解...
在Oracle数据库管理中,查询优化是一项至关重要的任务,它直接影响到数据库系统的性能和效率。"Oracle查询优化改写"是一个专业领域,旨在通过调整SQL语句的结构和逻辑,提高查询速度,降低资源消耗,从而提升整体...
oracle海量查询的数据优化! 建立“适当”的索引是实现查询优化的首要前提。