- 浏览: 386008 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (314)
- java (132)
- 生活 (13)
- javase模式 (6)
- weblogic (4)
- jquery (5)
- sql (21)
- ecside (1)
- el (3)
- css (5)
- spring (7)
- ireport (2)
- linux (14)
- struts2 (2)
- jstl (1)
- rmi (1)
- rose (9)
- js (6)
- swing (4)
- webservice (1)
- jboss (1)
- ejb3 (2)
- xml (1)
- 线程 (9)
- socket (3)
- jms (2)
- tomcat (10)
- 领域驱动 (3)
- json (3)
- 权限 (2)
- jvm (1)
- 书籍 (1)
- eclipse RCP (0)
- 数据库设计 (10)
- 软件分析建模 (5)
- 分析建模 (3)
- hibernate jpa (5)
- Java 获取系统信息,包括CPU使用率、硬盘大小、网卡状态、系统信息等 (1)
- 项目管理 (2)
- 财务 (0)
- oracle (2)
- 需求 (2)
- rcp gef (0)
- c++ (1)
- hadoop (2)
- BIGDATA (3)
- c (6)
最新评论
-
lh_kevin:
...
jpa 注解 -
一别梦心:
你好,我也遇到此问题了。就你贴的那段代码,你说了两种解决方式, ...
Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法 -
fireinjava:
...
el表达式 -
宋建勇:
...
JSON: property "xxx" has no getter method in class "..." -
handawei:
有道理,jpa是orm框架的java标准,它关注的是对象到关系 ...
jpa 注解
一、SQL语句优化:
1: exists 快于in
2: 数据量小时连接查询快于子查询,数据量大时子查询快于连接查询
3: select (*) 快于 select count(col)
4: 连接查询快于from多个表查询
如果查询结果来源于多个表中则用连接查询,如果最后结果来源于一个中则推荐用子查询
二、in可以分为三类:
1、形如select * from t1 where f1 in ('a','b'),应该和select * from t1 where f1 ='a' or f1='b' 或者 select * from t1 where f1 ='a' union all select * from t1 f1='b'比较效率,搂主可能指的不是这一类,这里不做讨论。
2、形如select * from t1 where f1 in (select f1 from t2 where t2.fx='x'),其中子查询的where 里的条件不受外层查询的影响,这类查询一般情况下,自动优化会转成exist语句,也就是效率和exist一样。
3、形如select * from t1 where f1 in (select f1 from t2 where t2.fx=t1.fx),其中子查询的where 里的条件受外层查询的影响,这类查询的效率要看相关条件涉及的字段的索引情况和数据量多少,一般认为效率不如exists。
除了第一类in语句都是可以转化成exists 语句的,一般编程习惯应该是用exists而不用in.
三、如A,B两个表,
当只显示一个表的数据如A,关系条件只一个如ID时,使用IN更快:
select * from A where id in (select id from B)
当只显示一个表的数据如A,关系条件不只一个如ID,col1时,使用IN就不方便了,可以使用EXISTS:
select * from A where exists (select 1 from B where id = A.id and col1 = A.col1)
当只显示两个表的数据时,使用IN,EXISTS都不合适,要使用连接:
select * from A left join B on id = A.id
所以使用何种方式,要根据要求来定。
select * from tba left join tbb on tba .id=tbb.id and tbb.name = 'aaa'
select * from tba left join tbb on tba .id=tbb.id where tbb.name = 'aaa'
on 后的条件是连接的时候 过滤之用
由于是left join ,所以在on后面写第一个表的过滤条件都是没有用的
结果仍然存在不一致的可能的
跟实验数据有关(试验)
如果不是正式数据
你先执行: delete from tbb ;
然后再比较一下结果就可以看出来了
结果会是:
select * from tba left join tbb on tba .id=tbb.id and tbb.name = 'aaa'
--返回tba所有记录
select * from tba left join tbb on tba .id=tbb.id where tbb.name = 'aaa'
-- 没有任何记录返回
on 和where
几乎不可能写出一致的来
2种写法就是2种逻辑
基本上not in 的写法都能用 A left join B on A.id=B.id where B.id is null 来取代
建立id索引后,效率有的时候能提升千百倍以上
//======
别名不可用在where group 中 可以用在order 中 这里的别名特指字段的别名
rownum只能是小于 不能是大于
====
select
*
from
( select
row_.*,
rownum rownum_
from
( select
czy0_.czgh as czgh21_,
czy0_.CHARGE_BZ as CHARGE2_21_,
czy0_.czmm as czmm21_,
czy0_.czqx as czqx21_,
czy0_.ksbm as ksbm21_,
czy0_.KSBM_JC as KSBM6_21_,
czy0_.srf as srf21_,
czy0_.xm as xm21_,
czy0_.yfbh as yfbh21_,
czy0_.ysbh as ysbh21_
from
Czy czy0_ ) row_
where
rownum <= 10
)
where
rownum_ > 5
发表评论
-
关于Union 中 ORA-12704:字符集不匹配问题的解决 .
2012-11-05 18:23 4457zhuan:http://blog.csdn.net/lqh4 ... -
oracle解锁
2012-06-19 17:04 796查看锁表进程SQL语句1: select sess.sid, ... -
Oracle集合操作函数:Union、Intersect、Minus
2012-02-17 16:19 1290集合操作不适用于LOB,Varray和潜逃表列 Unio ... -
Merge用法:Oracle 10g中对Merge语句的增强
2012-02-17 16:05 1100Merge用 ... -
数据库优化
2011-12-19 14:17 858转:http://www.iteye.com/topic/11 ... -
导入导出,创建databaselink
2011-08-10 15:56 2126pl/sql导出表结构和表 ... -
oracle改错
2011-02-09 12:19 1376系统运行了一段时间 ... -
dba常用sql
2010-12-16 17:19 11731. 查看表空间的名称及大小 select t.tablesp ... -
Oracle语句优化53个规则详解(转载)
2010-12-15 11:41 861Oracle语句优化53个规则 ... -
表修改
2010-11-17 23:12 840使用 字符串中使用’ Insert into product ... -
报表函数
2010-11-17 22:06 796报表函数: 总计: select 1 ,t.month ... -
窗口函数
2010-11-16 21:32 1022为计算一定的范围的累积和移动平均值,可以结合聚合函数使用:su ... -
orace评级函数
2010-11-15 22:35 1076cume_dist(): 功能描述:计算一行在组中的相对位置 ... -
orace评级函数
2010-11-14 23:43 920rank() over (order by XX): /* ... -
orcel sql 技巧
2010-11-14 23:05 1443转载:http://www.iteye.com/topic/8 ... -
oracle
2010-10-11 10:17 760今天没事来说说oracle性能优化的技巧。。 1.选用适合的 ... -
sql优化设定
2010-09-02 10:41 868select /*+RULE*/ m.daterunid ... -
ORACLE 中IN和EXISTS比较
2010-08-23 09:49 642EXISTS的执行流程 select * from ... -
rank over pation
2010-08-11 11:11 1242排列(rank())函数。这些排列函数提供了定义一个集合(使用 ... -
group
2010-05-30 16:50 775select t.startstncode ,sum ...
相关推荐
数据库查询优化是数据库管理系统中的关键环节,其目的是在满足用户查询需求的同时,尽可能地提高查询效率,减少资源消耗。在数据库领域,有三种经典的查询优化算法:基于成本的优化、基于规则的优化以及动态规划优化...
Oracle 多表查询优化 Oracle 多表查询优化是指在 Oracle 数据库管理系统中,为了提高多表查询的效率和性能采取的一些优化策略和技术。在 Oracle 中,多表查询是指从多个表中检索数据的操作。这种操作可能会占用大量...
"基于机器学习的查询优化研究" 本文主要介绍基于机器学习的查询优化研究,旨在提高查询效率和准确性。研究方法主要集中在特征选择、模型构建、实验设计和评估指标上。通过采用机器学习技术,训练出更高效的查询计划...
Oracle查询优化是数据库管理中的重要环节,它直接关系到数据库的性能和响应速度。针对Oracle数据库的查询优化,本文件提供了丰富的技巧和案例分析,以帮助读者深入理解优化原理,并能在实际工作中学以致用。 首先,...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
标题与描述概述的知识点主要集中在数据库查询优化技巧上,尤其针对拥有百万级别数据量的数据库。以下是对这些知识点的详细解读: ### 数据库快速查询优化技巧 #### 1. 避免全表扫描,优化WHERE子句 - **空值判断**...
综述查询优化技术范围,包括查询重用、查询重写规则、查询算法优化、并行查询优化等 综述逻辑查询优化,包括子查询的优化、视图重写、等价谓词重写、条件化简、连接消除、非SPJ的优化等 综述逻辑物理优化,包括单表...
### 数据库查询优化的核心知识点 #### 一、查询优化的重要性 数据库查询优化是数据库管理系统(DBMS)中的关键组件,其目标在于选择最有效的查询执行计划,以最小化资源消耗(如CPU时间、I/O操作)并提高响应速度。...
【标题】:“百万数据查询优化海量数据查询优化” 在处理海量数据时,查询优化显得尤为重要,特别是当数据量达到百万级别甚至更高时。查询优化旨在提高数据查询的效率,减少查询时间,提升系统性能。以下是一些关键...
本文将深入探讨如何针对Postgres进行查询优化,确保高效的数据检索,同时解决分页查询的问题。 1. **索引优化**:索引是提升查询速度的关键。对于频繁进行查询的字段,尤其是用于where条件、join条件和排序的字段,...
Oracle查询优化是数据库管理中的关键技能,尤其是在处理大型数据集时,有效的查询优化能显著提升系统性能,降低资源消耗。本书“Oracle查询优化改写-技巧与案例2.0”聚焦于这一主题,旨在为数据库管理员(DBA)和开发...
### 分布式数据库查询优化详解 #### 一、背景与挑战 随着信息技术的快速发展和各行各业对数据处理需求的增加,数据库系统面临着前所未有的挑战。一方面,数据量的急剧增长要求数据库具备更高的存储能力和更快的...
Oracle 多表查询优化 在 Oracle 数据库中,多表查询是一种常见的查询方式,但它也可能会对数据库性能产生影响。本文将讨论 Oracle 多表查询优化的几种方法,帮助开发者提高数据库性能。 1. 选择最有效率的表名顺序...
在Oracle数据库中,大型表查询优化是一个至关重要的主题,尤其对于处理海量数据的企业级应用而言。Oracle数据库以其高效、稳定和强大的功能著称,但在处理大规模数据时,如果不进行适当的优化,查询性能可能会显著...
在数据库领域,查询优化是提高数据库系统性能的关键环节。实验九“查询优化2”主要探讨了如何通过不同的策略和方法来提升SQL查询的执行效率。本实验基于《数据库概论》这本书,旨在帮助学习者深入理解查询优化的概念...
分布式数据库查询优化是关系数据库管理系统领域中的一个重要课题,它直接影响到数据库系统的性能,尤其在处理大量数据和复杂查询时,高效的查询优化算法可以显著减少查询响应时间,提高系统吞吐量。本文讨论的基于半...
《查询优化》实验报告主要探讨了在SQL Server 2000环境下,如何通过查询优化提升数据库性能。实验中,采用了一个典型的学生-课程-选课的数据库结构,包括s、c和sc三个表,各表之间存在外键关联。通过对不同查询场景...