各位老大,最近工作原因,要经常写一些sql语句。
但是读写的数据都至少是千万行的表,
有没什么书或者资料介绍如何写出高效率的sql语句的。谢谢。

解决方案 »

  1.   

    效率可以考虑下索引,分区。还有就写sql语句的时候少使用模糊查询
      

  2.   

    1.在频繁查询的字段上建立索引
    2.将大量的数据先插入到临时表中,在进行处理
    3.查看执行计划有没有走索引,没有索引,就强制索引
    4.使用性能工具测试(如:toad等等),生成测试报告,对症下药
      

  3.   

     优化SQL语句
    系统的运行性能如何,很大一部分是与编程人员有关。本章介绍基于开销的SQL语句程序设计,包括:
     SQL语句优化方法
     优化目标
     最佳实例
     SQL语句优化技巧
     使用EXISTS和IN§25.1  SQL语句的优化方法
    在提高SQL语句效率上,可以考虑下面几个方面:
     重新构造索引;
     重新构造语句;
     修改或禁止触发器;
     重新构造数据;
     及时统计CBO所用信息。
      

  4.   

    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”章节。
    判定式失败 见“判定式崩溃”
      

  5.   

    写出高性能SQL是基于对ORACLE的理解深度和你实际环境决定的。
    先了解清楚ORACLE基础、架构,然后学习深入调优,
    ORACLE学习不能一蹴而就。
      

  6.   

    saint13#163.com(replace # with @,^_^)
      

  7.   

    1,索引
    2,分区表
    3,sql语句的优化
    基本就这三个方面了。
      

  8.   

    谢谢,给我一份!
    [email protected]