注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小葫芦君(汉斯的博客)

博客迁移到新博客:https://blog.ssxingshou.com

 
 
 

日志

 
 
关于我

小小葫芦商城,为您提供高品质的商品,一流的产品,一流的包装服务,一流的物流服务,放心购买

网易考拉推荐

一些简单的oracle查询优化  

2012-06-19 10:34:44|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  • 使用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独有的基于成本的优化等。这里面就大有学问了,希望大家一起交流。
  评论这张
 
阅读(472)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017