ORACLE SQL性能优化大总结
ORACLE SQL性能优化大总结
1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
" ?; J) n+ v8 J- v" q Oracle的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。假如有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
7 Y6 A% _; P7 R$ K8 k+ i' B2 G(2) WHERE子句中的连接顺序.: 7 _' p! V& j0 t
ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
0 \ _- K* U7 q3 A- v G(3) SELECT子句中避免使用 ‘ * ‘: " S. l, j9 `4 ^& Y7 K$ A
ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 / a" Q! e3 U2 s8 e+ S4 T
(4) 减少访问数据库的次数: 8 d0 y! R/ w! y. D8 t e9 [7 I' ]# s
ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等; ) T0 @ M; r( k8 H) @$ h
(5) 在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为200 8 u% p8 @$ p9 t2 e' }4 B# }
(6) 使用DECODE函数来减少处理时间:
8 i- k$ O- d& k/ Q 使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.
$ L; z2 I g" x! s. r! E(7) 整合简单,无关联的数据库访问:
I# L8 o9 F9 W7 i2 i3 n0 a" i 假如你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)
/ O3 W+ r; ^ t; s; E* t1 U' P(8) 删除重复记录: 8 v P- d3 o$ z
最高效的删除重复记录方法 ( 因为使用了ROWID)例子:
1 K5 I3 Y: X6 a ]8 PDELETE from EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) / J5 ]1 Z7 x/ {0 K
from EMP X WHERE X.EMP_NO = E.EMP_NO); $ b w: W3 J9 i/ Z) ^
(9) 用TRUNCATE替代DELETE: 9 y6 {7 l'
相关文档:
这是一条颠覆常规的插入方法,一条INSERT语句可以完成向多张表的插入任务。小小地展示一下这种插入方法。
1.创建表T并初始化测试数据,此表作为数据源。
sec@ora10g> create table t (x number(10), y varchar2(10));
sec@ora10g> insert into t values (1,'a');
sec@ora10g> insert into t values (2,'b');
......
内容转自:http://david.btbbt.blog.163.com/blog/static/205989372009973357418/
登录远程SQL服务器
一 看ping 服务器IP能否ping通。
这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。
二 在Dos或命令行 ......
CREATE PROCEDURE dbo.OutputData
@tablename varchar(200)
AS
declare @column varchar(1000)
declare @ ......
查询速度慢的原因很多,常见如下几种:
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多 ......
oracle常用经典SQL查询
常用SQL查询:
1、查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
2、查看表空间物理文件的名称 ......