求书:有关高性能的sql语句 各位老大,最近工作原因,要经常写一些sql语句。但是读写的数据都至少是千万行的表,有没什么书或者资料介绍如何写出高效率的sql语句的。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 效率可以考虑下索引,分区。还有就写sql语句的时候少使用模糊查询 1.在频繁查询的字段上建立索引2.将大量的数据先插入到临时表中,在进行处理3.查看执行计划有没有走索引,没有索引,就强制索引4.使用性能工具测试(如:toad等等),生成测试报告,对症下药 优化SQL语句系统的运行性能如何,很大一部分是与编程人员有关。本章介绍基于开销的SQL语句程序设计,包括: SQL语句优化方法 优化目标 最佳实例 SQL语句优化技巧 使用EXISTS和IN§25.1 SQL语句的优化方法在提高SQL语句效率上,可以考虑下面几个方面: 重新构造索引; 重新构造语句; 修改或禁止触发器; 重新构造数据; 及时统计CBO所用信息。 SQL优化技巧 注释以更快的工作完成系统的工作 选择行数最少为目标,可以使SQL解释和操作更少。分析连接的层次 逐一对连接进行分析,高清具体的使用。检查基础视图 如果用户访问了视图或与视图进行过连接,则应对视图进行彻底的检查,看视图是否还需要优化。对于小表,可以进行全表扫描 通过全表扫描,可以使问题解决更加清楚。对于小表或可选择性差的索引,全表扫描更有效。逐条检查执行规划 索引访问和嵌套连接(NL)可能并不是最优。对于特地的连接类型,查询不要返回太多的行。对于运行时间较长的查询,执行下面数学运算:如: 某个运算需3分钟; 查询需要将表so_lines和表so_headers连接起来。 验证下列条件: so_headers 的选择性为5%; so_lines 的选择性为15%; so_headers = 1GB,so_lines=25GB 数据工作集(结果集)=3.04GB 所需吞感吐量=22MB/每秒可看出,速度取决于系统的配置,要求3分钟查出结果的期望太高了。监视磁盘读和缓冲区的获取操作连接 见本章的“磁盘读和缓冲区获取”连接: 检查外连接 以子查询替代连接 见本章“选择有利的连接次序”选择EXISTS 或 IN 见后面“使用EXISTS和IN”章节。判定式失败 见“判定式崩溃” 写出高性能SQL是基于对ORACLE的理解深度和你实际环境决定的。先了解清楚ORACLE基础、架构,然后学习深入调优,ORACLE学习不能一蹴而就。 saint13#163.com(replace # with @,^_^) 1,索引2,分区表3,sql语句的优化基本就这三个方面了。 谢谢,给我一份![email protected] oracle物化视图建立时报错ORA-06512 急~~~~~~~请教关于having的使用 关于dblink的问题 reuse、nochche是什么意思啊? 那里有oracle下载,官方网站那里好象好麻烦拉,不胜感激.. 简单的建立视图问题,请高手指点!!! oracale数据库问题,请大家指教!! 中秋節來臨之際,祝大家幸福安康,工作順利! 请教存储过程的简单问题? 请问如何把从oracle取出来的数据AdoRecordset保存为.dbf文件和.xls文件 急急急!!!Oracle数据库恢复问题 请问该如何修改Oracle的会话时间长度?谢谢。【高分】
2.将大量的数据先插入到临时表中,在进行处理
3.查看执行计划有没有走索引,没有索引,就强制索引
4.使用性能工具测试(如:toad等等),生成测试报告,对症下药
系统的运行性能如何,很大一部分是与编程人员有关。本章介绍基于开销的SQL语句程序设计,包括:
SQL语句优化方法
优化目标
最佳实例
SQL语句优化技巧
使用EXISTS和IN§25.1 SQL语句的优化方法
在提高SQL语句效率上,可以考虑下面几个方面:
重新构造索引;
重新构造语句;
修改或禁止触发器;
重新构造数据;
及时统计CBO所用信息。
以更快的工作完成系统的工作 选择行数最少为目标,可以使SQL解释和操作更少。
分析连接的层次 逐一对连接进行分析,高清具体的使用。
检查基础视图 如果用户访问了视图或与视图进行过连接,则应对视图进行彻底的检查,看视图是否还需要优化。
对于小表,可以进行全表扫描 通过全表扫描,可以使问题解决更加清楚。对于小表或可选择性差的索引,全表扫描更有效。
逐条检查执行规划 索引访问和嵌套连接(NL)可能并不是最优。对于特地的连接类型,查询不要返回太多的行。
对于运行时间较长的查询,执行下面数学运算:如:
某个运算需3分钟;
查询需要将表so_lines和表so_headers连接起来。 验证下列条件:
so_headers 的选择性为5%;
so_lines 的选择性为15%;
so_headers = 1GB,so_lines=25GB
数据工作集(结果集)=3.04GB
所需吞感吐量=22MB/每秒
可看出,速度取决于系统的配置,要求3分钟查出结果的期望太高了。监视磁盘读和缓冲区的获取操作连接 见本章的“磁盘读和缓冲区获取”
连接:
检查外连接
以子查询替代连接 见本章“选择有利的连接次序”
选择EXISTS 或 IN 见后面“使用EXISTS和IN”章节。
判定式失败 见“判定式崩溃”
先了解清楚ORACLE基础、架构,然后学习深入调优,
ORACLE学习不能一蹴而就。
2,分区表
3,sql语句的优化
基本就这三个方面了。
[email protected]