Oracle 优化

  • sql语句使用大写

  • 把 * 替换成所有字段名

  • 条件子句,优先顺序:on,where ,having

  • exists替代 in ,not exists 替代 not in
    -“ >=”替代>,例如>=4比>3好

  • group by 最好使用where子句先筛选后分组,不用having先分组后筛选

  • where子句执行顺序:从右到左,过滤掉最多记录的条件必须写在WHERE子句的最后

  • 索引

    • 查看索引字段
      select * from user_indexes where TABLE_NAME='表名'
    • 查看被索引字段信息
      select * from user_ind_columns where index_name=upper('索引名');
    • 避免索引使用not,使用计算,导致不适用索引而是全表扫描
    • 索引建立在多个列,只有在第一个列使用where子句才能保证优化器使用该索引
    • 用 union 代替 or(针对多个索引列)
    • where 中一下内容不适用索引
      • '!=',not,'<>'
      • 字符连接函数
      • 数学函数
      • 相同索引列互相比较
      • 通配符出现在搜索词首,例如:"%aa"
      • 控制比较 null
  • pl/sql的F5-》分析计划窗口

    • 第一行是总体消耗值
    • 缩进最多最先执行,缩进相同,从上到下
    • 表的访问方式
      • table access full 全表扫描
      • index fast full scan 索引扫描
    • 基数:数据行数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。