您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Oracle 性能优化

2025/9/16 11:07:17发布21次查看
1、在select语句中避免使用 “*” 2、尽可能减小记录集行数 限制记录集获取到的记录行数同样可以缩短语句执行时间,提高查询效率。 select user_name, address, login_adte from log_event where rownum = 100 order by logon_date desc; 3、使用rowid 高效
1、在select语句中避免使用 “*”
2、尽可能减小记录集行数
         限制记录集获取到的记录行数同样可以缩短语句执行时间,提高查询效率。
         select user_name, address, login_adte
from log_event
where rownum
3、使用rowid 高效删除重复数据
         在重复的记录中,可能所有列的内容都相同,但是rowid 不会重复。
         delete from stu s
where s.rowid > (select min(t.rowid)
from stu t
where t.sno = s.sno);
4、使用truncate 替代delete删除记录
5、高效统计记录行数(实际应用中并没有使用价值)
         使用user_tables 视图查询记录行数
         select table_name, num_rows
         from user_tables
         where table_name = ‘stu’
         补充:user_tables视图中保存了oracle的所有用户表基本信息,包括表空间、状态、缓存等。
6、尽量多使用commit
         执行commit 语句后能释放的资源主要包括:
l  回滚段上用于回复数据的信息
l  被程序语句获取的锁
l  redo log buffer 中的空间
l  oracle 为管理上述3 种资源的内部花销
7、避免使用having 语句
         having 语句只会在检索出所有记录之后才对结果集进行过滤。若能通过where 子句限制查询的数目,可以减少这方面的开销。
8、用exists 替代in 谓词
         带有exists 谓词的子查询不返回任何实际数据,只产生逻辑真值true 或逻辑假值false。
9、使用 “>=” 代替 “>” 运算符
10、避免在select 子句中使用distinct 关键字
         补充:消除重复记录可以通过子查询、groupby 等其他方式实现,对于大数据来说,尽量避免使用distinct。
11、用索引提高查询效率
12、避免在索引列上进行运算
         在索引列上进行运算,将导致索引失效。
13、在索引列上使用union替代or
         在select 语句中对索引列进行or操作,此时索引将不会被引用。对索引列使用or 运算符将造成全表扫描。
         补充:使用union代替or操作规则只针对多个索引列有效,如果有的列没有索引,检索效率可能反而会因为没有选择or而降低。
14、避免在索引列上使用isnull 或 is not null 条件
         对于oracle 索引来说,如果一个索引列的某个值为空,该值将不存在于索引列中。
15、使用where 子句优化group by (内容同7)
         使用where 子句实现部分having 子句的功能。
16、处理预定义异常
17、处理自定义异常
本内容摘自《oracle 数据库编程经典300例》
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product