- 浏览: 456906 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (229)
- gef (1)
- emf (0)
- rcp (2)
- 杂谈 (3)
- draw2d (2)
- xml (1)
- spring (16)
- osgi (1)
- jsp (6)
- hibernate (8)
- j2se (41)
- oracle (25)
- js (23)
- ognl (1)
- struts2 (2)
- webwork (1)
- prototype (1)
- dwr (3)
- struts (7)
- axis2 (3)
- axis1 (6)
- lucene (9)
- pop3 (1)
- aspectj (1)
- 网络协议 (6)
- bat (6)
- Quartz (5)
- jms (3)
- jndi (7)
- 网络爬虫 (7)
- acegi (1)
- linux (5)
- 缓存 (1)
- mysql (1)
- 在使用Java处理图形应用时,经常有人推荐设置 -Djava.awt.headless=true,具体含义和效果查了一下,记录在这里分享 Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。 Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主 (1)
最新评论
-
hanmiao:
注释掉的那壹行少了壹個斜线,楼主...
servlet导出excel -
天下无贼:
Thread.Interrupt方法,只是通过扔出异常的方式, ...
Java Thread.interrupt 害人! 中断JAVA线程(zz) -
天下无贼:
呵呵,是你自己写错了。
Java Thread.interrupt 害人! 中断JAVA线程(zz) -
MO_ZHUANG_D:
如果是真的就感激不尽了
Axure RP教程 -
小嘴冰凉:
在开始执行的时候,如果是数据库存储,程序会从数据库中查job信 ...
quartz的持久化
嵌套SQL的查询速度比较分析
文章中使用Oracle自带的HR数据库,故代码可以直接进行测试。
代码一:
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'A%'
or t.first_name like 'B%'
or t.first_name like 'H%'
or t.first_name like 'K%'
or t.first_name like 'M%'
or t.first_name like 'J%'
or t.first_name like 'N%'
执行计划:
代码二:
select *
from (
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'A%'
or t.first_name like 'B%'
or t.first_name like 'H%'
or t.first_name like 'K%'
or t.first_name like 'M%'
or t.first_name like 'J%'
or t.first_name like 'N%'
)
执行计划:
对比:代码1与代码2的执行计划相同
代码三:
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'A%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'B%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'H%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'K%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'M%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'J%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'N%'
执行计划:
代码四:
select * from
(
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'A%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'B%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'H%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'K%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'M%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'J%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'N%'
)
执行计划:
对比:代码4中Sort Unique与代码3的执行计划相同。但Oracle在处理代码4的查询语句时,构建了一个内部视图来整理查询结果,其中需要21次IO操作,故需要更长的时间。
其他:在一个SQL中,使用“OR”语句比使用多个Union会花费更短的时间。
代码五:
代码5-1:
select *
from
(select * from HR.Employees tx where tx.department_id = 50) T1,
(select * from HR.Departments ty where ty.department_id < 150) T2
where t1.department_id = t2.department_id
代码5-2:
select *
from
HR.Employees t1,
HR.Departments T2
where t1.department_id = t2.department_id and t1.department_id = 50 and t2.department_id < 150
代码5-3:
select *
from
HR.Employees T1,
HR.Departments T2
where t1.department_id = t2.department_id(+) and t1.department_id = 50 and t2.department_id <150
代码5-4:
select *
from
HR.Employees T1,
HR.Departments T2
where t1.department_id(+) = t2.department_id and t1.department_id = 50 and t2.department_id <150
代码5-1到代码5-4的Oracle执行计划分析结果相同:
对比:代码5-1到代码5-4的执行计划相同。Oracle是先对T1和T2中数据进行过滤后,再对结果集进行关联查询。且Oracle对表过滤内容进行了优化,对表Departments的查询优化为 TY.Department_ID=50 而不是 TY.Department_ID<150
http://www.cnblogs.com/joyyuan97/archive/2008/09/13/516333.html
文章中使用Oracle自带的HR数据库,故代码可以直接进行测试。
代码一:
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'A%'
or t.first_name like 'B%'
or t.first_name like 'H%'
or t.first_name like 'K%'
or t.first_name like 'M%'
or t.first_name like 'J%'
or t.first_name like 'N%'
执行计划:
代码二:
select *
from (
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'A%'
or t.first_name like 'B%'
or t.first_name like 'H%'
or t.first_name like 'K%'
or t.first_name like 'M%'
or t.first_name like 'J%'
or t.first_name like 'N%'
)
执行计划:
对比:代码1与代码2的执行计划相同
代码三:
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'A%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'B%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'H%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'K%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'M%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'J%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'N%'
执行计划:
代码四:
select * from
(
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'A%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'B%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'H%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'K%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'M%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'J%'
union
select t.employee_id, t.first_name, t.phone_number from HR.Employees t where t.first_name like 'N%'
)
执行计划:
对比:代码4中Sort Unique与代码3的执行计划相同。但Oracle在处理代码4的查询语句时,构建了一个内部视图来整理查询结果,其中需要21次IO操作,故需要更长的时间。
其他:在一个SQL中,使用“OR”语句比使用多个Union会花费更短的时间。
代码五:
代码5-1:
select *
from
(select * from HR.Employees tx where tx.department_id = 50) T1,
(select * from HR.Departments ty where ty.department_id < 150) T2
where t1.department_id = t2.department_id
代码5-2:
select *
from
HR.Employees t1,
HR.Departments T2
where t1.department_id = t2.department_id and t1.department_id = 50 and t2.department_id < 150
代码5-3:
select *
from
HR.Employees T1,
HR.Departments T2
where t1.department_id = t2.department_id(+) and t1.department_id = 50 and t2.department_id <150
代码5-4:
select *
from
HR.Employees T1,
HR.Departments T2
where t1.department_id(+) = t2.department_id and t1.department_id = 50 and t2.department_id <150
代码5-1到代码5-4的Oracle执行计划分析结果相同:
对比:代码5-1到代码5-4的执行计划相同。Oracle是先对T1和T2中数据进行过滤后,再对结果集进行关联查询。且Oracle对表过滤内容进行了优化,对表Departments的查询优化为 TY.Department_ID=50 而不是 TY.Department_ID<150
http://www.cnblogs.com/joyyuan97/archive/2008/09/13/516333.html
发表评论
-
Oracle reverse函数
2011-12-08 13:56 2054Oracle reverse函数 2007-10-25 14: ... -
教你快速掌握Oracle数据库中的like优化-性能调优
2011-12-08 13:55 12081。尽量不要使用 like '%..%' 2 ... -
Oracle执行计划详解
2011-07-26 11:40 1056Oracle执行计划详解 --- 作者:TTT BLOG 本文 ... -
闲谈Oracle执行计划的步骤顺序
2011-07-13 17:45 1257经过长时间学习Oracle, ... -
lspm_project_end
2011-07-01 17:13 836事务管理概述 “事务”是一个逻辑工作单元,它包括一系列的操作 ... -
oracle表分区详解
2010-12-01 12:17 1015此文从以下几个方面来整理关于分区表的概念及操作: ... -
回滚段探究
2010-10-26 17:09 888http://blog.csdn.net/biti_rainy ... -
block的一些概念
2010-10-26 10:10 1160http://space.itpub.net/12361284 ... -
Oracle Buffer Cache原理总结(一)
2010-10-26 09:53 1466http://space.itpub.net/?uid-123 ... -
oracle的表空间、分区表、以及索引的总结
2010-05-18 15:32 1279表空间: Oracle的UNDOTBS01.DBF文件太大的 ... -
数据库中事务机制的进阶使用(整理)
2009-11-02 10:13 1632在前面的两篇blog中,我写了些关于数据库中的锁方面的一些内 ... -
PL/SQL Developer使用技巧
2009-08-31 13:24 8881、PL/SQL Developer记住登 ... -
oracle中的角色
2009-08-31 13:23 1006一、何为角色? 我 ... -
oracle的异常处理
2009-08-18 11:07 951oracle提供了预定义例外、非预定义例外和自定义例外三 ... -
在Oracle中使用自治事务保存日志表条目
2009-08-18 10:41 1146[size=x-large] [摘要] ... -
Oracle内存参数调优技术详解
2009-07-31 16:46 1668[size=large] 前言 近来公司技术,研发都在 ... -
如何在WebLogic 8.1.6环境中查找有连接池泄漏的代码
2009-07-31 13:09 2705[size=large] 解决连接池泄漏步骤 登录we ... -
Oracle导出程序Exp的使用
2009-07-16 12:23 2729http://www.blogjava.net/xiaohu/ ... -
createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,Re
2008-11-25 17:14 1084用缺省设置创建时,ResultSet 是一种只能访问一次(on ... -
oracle 闪回查询
2008-11-21 14:22 1430--对一般用户如果想执行 闪回查询 需要设置下列3个参数! 1 ...
相关推荐
### SQL查询慢原因分析 #### 一、索引缺失或未使用 索引是数据库中用于加速数据检索的重要工具。当SQL查询没有使用适当的索引时,数据库管理系统(DBMS)可能需要全表扫描(Table Scan),即遍历整个表中的每一行...
2. **查询优化**:SQL查询分析器可以帮助用户分析查询的执行计划,理解数据库如何处理查询,从而找出可能的性能瓶颈。通过调整索引、重写查询或优化查询结构,可以显著提升查询速度。 3. **存储过程和函数**:SQL...
5. **性能优化**:分析器可能提供查询执行计划,帮助用户优化SQL语句,提升查询速度。 6. **日志记录**:记录用户的查询历史,方便回溯和重复执行查询。 三、SQL基本操作 1. **SELECT语句**:用于从数据库中检索...
实验九“查询优化2”主要探讨了如何通过不同的策略和方法来提升SQL查询的执行效率。本实验基于《数据库概论》这本书,旨在帮助学习者深入理解查询优化的概念、原理以及实践技巧。 查询优化涉及多个方面,包括查询...
- **性能分析**:分析查询执行计划,帮助找出慢查询并进行优化。 - **数据导入导出**:支持从不同格式(如CSV、Excel)导入或导出数据,方便数据迁移和备份。 - **事务管理**:允许用户执行事务操作,确保数据的...
子查询是指在一个查询语句中嵌套另一个查询语句。子查询可以出现在SELECT、FROM或WHERE子句中。 ```sql SELECT * FROM table1 WHERE column IN (SELECT column FROM table2); ``` 2. **联结查询**: 联结...
SQL Server的查询优化器会分析查询的不同执行路径,选择最有效的一种。我们可以通过创建索引、调整查询结构或使用hints来影响优化器的选择,以提高查询速度。 “子查询”是嵌套在其他查询中的查询,用于获取或计算...
2. **比较逻辑运算符查询**:在SQL中,比较逻辑运算符如=、、<、>、、>=以及BETWEEN、IN和NOT IN等用于筛选满足特定条件的数据。理解这些运算符可以帮助精确地定位和过滤所需信息。 3. **SQL关键字查询**:SQL的...
它可以帮助开发者分析查询结构,优化性能,并确保代码符合最佳实践。 1. SQL查询基础:SQL(Structured Query Language)是用于管理关系数据库的标准语言,包括数据查询、数据操纵、数据定义和数据控制等四大功能。...
2. **JOIN操作优化**:连接多个表时,选择合适的连接算法(如嵌套循环、哈希连接或排序合并连接)对于优化查询性能非常重要。 3. **谓词处理**:谓词指的是WHERE子句中的条件表达式。正确地组织和使用谓词可以有效...
### 基于SQL语句查询优化分析的研究 #### 概述 在当前的信息时代,数据库作为信息系统的核心组件,其性能直接影响着整个系统的响应速度和处理能力。SQL(Structured Query Language)作为数据库的标准语言,其查询...
SQLS查询分析器是一款专为数据库管理设计的实用工具,尤其对SQL Server数据库进行高效查询和分析时非常有用。这款绿色版本意味着它无需安装,可直接运行,方便用户随身携带和快速使用。下面我们将详细探讨SQLS查询...
- 使用`EXPLAIN PLAN`分析查询执行计划,找出可能的性能瓶颈。 11. **视图** - 视图是虚拟表,`CREATE VIEW view_name AS SELECT ...`定义视图,简化复杂查询。 12. **游标** - 游标允许逐行处理查询结果,常...
通过深入理解和熟练掌握这些经典SQL查询技巧,不仅可以提升在面试中的表现,还能在实际工作中更高效地管理和分析数据。这份资源很可能包含了一系列精心设计的SQL题目,涵盖了上述各个知识点,通过解答这些问题,用户...
使用Informix提供的系统视图和监控工具,如sysmaster数据库中的系统统计信息,可以分析SQL查询的执行情况,进而进行性能调优。 综上所述,Informix数据库的SQL查询语言是其核心功能之一,掌握SQL的应用不仅能够...
通过对SQL语句的执行计划进行分析,我们可以找到优化查询性能的策略,从而提高数据库系统的整体性能。这篇博客"通过分析SQL语句的执行计划优化SQL(总结)"深入探讨了这一主题,下面将对其中的主要知识点进行详细阐述...
子查询也是SQL查询中常见的部分,它们可以嵌套在其他查询中提供额外的筛选或计算。然而,子查询可能导致性能问题,尤其是在大型数据集上。有时,可以使用JOIN或临时表来替代子查询,从而提高性能。 此外,GROUP BY...
本次实验主要聚焦于SQL语句的高级查询技术,旨在深化学生对SQL查询的理解,并熟练掌握SQL Server 2000查询分析器的使用,以及如何运用SELECT语句进行多表查询。实验设定在Windows XP Professional操作系统环境下,...
### 如何设计高效合理的SQL查询语句 #### 引言 在现代软件开发过程中,数据库操作占据了极其重要的地位。尤其对于大规模数据集的应用场景而言,如何优化查询性能以提升用户体验和减少资源消耗变得尤为重要。本篇...
2. **EXPLAIN**:分析查询执行计划,帮助优化查询性能。 3. **慢查询日志**:记录执行时间过长的查询,便于分析和改进。 七、SQL安全与权限 1. **用户与角色**:管理数据库的访问权限,设置不同级别的用户和角色。...