易截截图软件、单文件、免安装、纯绿色、仅160KB

如何让你的SQL运行得更快(转贴)

如何让你的SQL运行得更快(转贴)    
  ----   人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略  
  了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库  
  环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。笔者在工作实践  
  中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的whe  
  re子句。在对它们进行适当的优化后,其运行速度有了明显地提高!下面我将从这三个  
  方面分别进行总结:  
  ----   为了更直观地说明问题,所有实例中的SQL运行时间均经过测试,不超过1秒的均  
  表示为(<   1秒)。  
  ----   测试环境--  
  ----   主机:HP   LH   II  
  ----   主频:330MHZ  
  ----   内存:128兆  
  ----   操作系统:Operserver5.0.4  
  ----数据库:Sybase11.0.3  
  一、不合理的索引设计  
  ----例:表record有620000行,试看在不同的索引下,下面几个   SQL的运行情况:  
  ----   1.在date上建有一非个群集索引  
  select   count(*)   from   record   where   date   >  
  '19991201'   and   date   <   '19991214'and   amount   >  
  2000   (25秒)  
  select   date,sum(amount)   from   record   group   by   date  
  (55秒)  
  select   count(*)   from   record   where   date   >  
  '19990901'   and   place   in   ('BJ','SH')   (27秒)  
  ----   分析:  
  ----date上有大量的重复值,在非群集索引下,数据在物理上随机存放在数据页上,在  
  范围查找时,必须执行一次表扫描才能找到这一范围内的全部行。  
  ----   2.在date上的一个群集索引  
  sele


相关文档:

PL/SQL学习笔记四


事务是Oracle9i中进行数据库操作的基本单位,在PL/SQL程序中,可以使用3个事务处理控制命令。
1. commit命令
commit是事务提交命令。Oracle9i数据库中,为保证数据一致性,在内存中为每个客户机建立工作区,客户机对数据库进行操作的事务都在工作区完成,只有执行commit命令后,工作区内的修改内容才写入到数据库上,称 ......

Sql Server 获得各种形式的日期

SQL codeDECLARE @dt datetime
SET @dt=GETDATE()
DECLARE @number int
SET @number=3
--1.指定日期该年的第一天或最后一天
--A. 年的第一天
SELECT CONVERT(char(5),@dt,120)+'1-1'
--B. 年的最后一天
SELECT CONVERT(char(5),@dt,120)+'12-31'
--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天
SE ......

SQL优化34条


(1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE 的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要 ......

SQL语句优化实践之一SQL_TRACE

SQL语句优化实践之一SQL_TRACE
 
环境:在PL/sql上调试数据
Pl/sql developer工具连接实例后即作为一个用户进程占用一个session;
 
select * from  v$session t  where t.PROGRAM='plsqldev.exe' and  t.USERNAME='DZJC'
查询结果显示了几个关键的字段
SADDR   RAW(4)  S ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号