ORACLE学习笔记之调节性能优化篇(4)

文章作者 100test 发表时间 2007:03:14 13:55:07
来源 100Test.Com百考试题网


8.怎么样快速复制表或者是插入数据

快速复制表可以指定Nologging选项

如:

Create table t1 nologging 

as 0select * from t2.

快速插入数据可以指定append提示,但是需要注意noarchivelog模式下,默认用了append就是nologging模式的。 在archivelog下,需要把表设置程Nologging模式。

insert /*  append */ into t1 

0select * from t2

注意:如果在9i环境中并设置了FORCE LOGGING,则以上操作是无效的,并不会加快,当然,可以通过如下语句设置为NO FORCE LOGGING。

Alter database no force logging.

是否开启了FORCE LOGGING,可以用如下语句查看

SQL> 0select force_logging from v$database.
9.怎么避免使用特定索引在很多时候,Oracle会错误的使用索引而导致效率的明显下降,我们可以使用一点点技巧而避免使用不该使用的索引,如:表test,有字段a,b,c,d,在a,b,c上建立联合索引inx_a(a,b,c),在b上单独建立了一个索引Inx_b(b)。在正常情况下,where a=? and b=? and c=?会用到索引inx_a,where b=?会用到索引inx_b,但是,where a=? and b=? and c=? group by b会用到哪个索引呢?在分析数据不正确(很长时间没有分析)或根本没有分析数据的情况下,oracle往往会使用索引inx_b。通过执行计划的分析,这个索引的使用,将大大耗费查询时间。当然,我们可以通过如下的技巧避免使用inx_b,而使用inx_a。 where a=? and b=? and c=? group by b|| --如果b是字符 where a=? and b=? and c=? group by b 0 --如果b是数字通过这样简单的改变,往往可以是查询时间提交很多倍当然,我们也可以使用no_index提示,相信很多人没有用过,也是一个不错的方法:
0select /*  no_index(t,inx_b) */ * from test t

where a=? and b=? and c=? group by b
举例:

相关文章


ORACLE学习笔记之调节性能优化篇(7)
ORACLE学习笔记之调节性能优化篇(6)
[Oracle]分享:我的oracle9i学习笔记(1)
[Oracle]分享:我的oracle9i学习笔记(2)
ORACLE学习笔记之调节性能优化篇(4)
ORACLE学习笔记之调节性能优化篇(5)
OracleSOASuite预览尝鲜(一)
ORACLE学习笔记之调节性能优化篇(3)
dbms_job包的应用:在Oracle中实现定时操作
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛