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

{转}SQL优化34 条建议

(1)  选择最有效率的表名顺序
(
只在基于规则的优化器中有效
)

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

那就需要选择交叉表
(intersection table)
作为基础表

交叉表是指那个被其他表所引用的表
.
(2)   WHERE子句中的连接顺序:
ORACLE采用自下而上的顺序解析
WHERE
子句
,
根据这个原

,
表之间的连接必须写在其他
WHERE
条件之前

那些可以
过滤掉最大数量记录的条件必须写在
WHERE
子句的末尾
.
(3)   SELECT子句中避免使用 
‘ 



ORACLE在
解析的过程中

会将
'*' 
依次转换成所有的列名

这个工作是通过查询数据字典完成的

这意味
着将耗费更多的时间
(4)  减少访问数
据库的次数:
ORACLE在
内部执行了许多工作

解析
SQL
语句

估算索引的利用率

绑定变量 

读数据块
等;
(5)  在
SQL*Plus , SQL*Forms

Pro*C
中重新设置
ARRAYSIZE
参数

可以增加每次数据库访问的检索数据量 
,
建议值为
200
(6)  使用
DECODE
函数来减少处理时间:
使用DECODE

数可以避免重复扫描相同记录或重复连接相同的表
.
(7)  整合简单
,
无关联的数据库访问:
如果你有几个简单的数据
库查询语句,
你可以把它们整合到一个查询中
(
即使它们之间没有关系
)
(8)  删除重复记
录:
最高效的删除重复记录方法 ( 
因为使用了
ROWID)
例子:
DELETE  from  EMP E  WHERE  E.ROWID > (SELECT MIN(X.ROWID)
from  EMP X  WHERE  X.EMP_NO = E.EMP_NO);
(9)  用
TRUNCATE
替代
DELETE

当删除表中的记录时,
在通常情况


回滚段
(rollback segments ) 
用来存放可以被恢复的信息

如果你


相关文档:

SQL语句 创建索引

语法:
CREATE [索引类型] INDEX 索引名称
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO
/*实例*/
USE 库名
GO
IF EXISTS
(SELECT * from SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引
DROP INDEX
TEST.IX_TEST_TNAME--如果存在则删除
--创建索引
CREATE NONCLUSTER ......

在SQL语句中,如何去掉小数点后面多余的零?

select convert(numeric(10,4),iinvnowcost) from ...
decimal 和 numeric (来源sql 联机丛书)
带定点精度和小数位数的 numeric 数据类型。
decimal[(p[, s])] 和 numeric[(p[, s])]
定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。decimal 的 SQL-92 同义词是 dec 和 dec(p, s)。
p(精度) ......

用SHELL的循环批量执行SQL语句

--ksh下的一个WHILE 循环的例子
integer i=1
while ((i<67))
do 
  pirnt $i
  i=i+1
done
--ksh 下一个FOR循环的例子
for i in `cat listdate.txt`
do
  echo "执行 $i "
done
--- date.pl 用于生成一个时间段文件
#!/usr/local/bin/perl
use DBI;
if($#ARGV<1)
 {
&nbs ......

sql查询,nolock写还是不写,这是一个问题

在做过的很多项目中,发现大家不管对什么表,逢select必定加上nolock(或者with(nolock)),好像已经是制度化的一种东西。有领导高人解释说加上nolock可以提高查询速度,不影响对数据表的其他并发操作。  
  但是真有必要每个查询都加nolock吗?个人认为加不加nolock还是值得我们根据实际情况斟酌一番的(至 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号