一些简单的oracle查询优化

来源:互联网 发布:汉王文本王软件 编辑:程序博客网 时间:2024/05/21 10:09

 

  • 使用where过滤行
    如果查询数据时禁止用程序过滤数据,尽量在sql中过滤数据。例如 查询性别为男的用户记录,一定要在where条件中过滤记录不能通过查询所有结果后在程序里面过滤
  • 使用表连接而不是多个查询
    在涉及到查询多个时,尽量使用表之间的连接进行查询,不要单独进行查询,然后再通过程序把结果集合起来。
  • 执行连接时使用完全限定的列引用
    在查询中包含表的别名,并为查询所引用的每列制定合适的别名,这样查询就不需要去查询表的列。
  • 使用CASE表达式而不是多个查询
    当要对一个表的相同自行许多计算时,使用CASE表达式而不是用多个查询
    Select 
    Cont(case when price <13 then 1 else null end )  low,
    Cont(case when price  between    13 and 15  then 1 else null end ) med,
    Cont(case when price >13 then 1 else null end ) high
     from table
  • 增加表索引
    1.要对指定的查询条件创建索引,但是在查询中用到 like '%name%' 是不走索引的尽量采用 like '%name' or like 'name%' 。
    2.创建函数索引
    如果查询条件为通过函数查询 例如 where name =Upper('AaBbCcDd')  ,这样要创建Upper(name)索引
    3.内容经常重复的字段不能建索引,例如性别之类的字段,里面的数据重复几率太大,不用创建索引。
  • 使用WHERE而不用HAVING
    Where用于过滤行,having用于过滤组,因为行被分组后,having才能过滤组,所以尽量用where过滤
  • 使用exists而不用IN
     因为Exists只检查行的存在,而in检查实际值。
  • 使用相同的SQL
    如果执行相同,oracle会使用缓存里面的数据,使用的SQL 必须绝对相同
    所有字符必须相同
    大小写要相同
    空格要相同
上面为一些简单的oracle SQL 注意地方。其实oracle优化还有很多,例如怎么去创建表空间,表空间怎么发布,怎么去创建索引,索引处理,怎么应用oracle的缓存,还有oracle独有的基于成本的优化等。这里面就大有学问了,希望大家一起交流。
原创粉丝点击