频道栏目
首页 > 资讯 > Oracle > 正文

Oracle部分sql优化

13-12-02        来源:[db:作者]  
收藏   我要投稿

1, 关于not in 和not exists

一直以来,not in 和not exits应该用哪个一直都在争论,当然专业的人都知道要使用noe exists。

通过oracle的执行计划可以发现,not in 会跳过索引走全表扫描,而not exists不会这样子。

2,避免在索引上面使用计算:

在索引上面使用计算会导致索引失效.

SELECT … FROM  DEPT  WHERE SAL * 12 > 25000; 

3,使用 >= 代替 >:

高效:

   SELECT *
   FROM EMP
   WHERE DEPTNO >=4
   
   低效:

   SELECT *
   FROM EMP
   WHERE DEPTNO >3


4,避免使用<>not操作,

select * from employee where salary <> 3000; 
select * from employee where salary<3000 or salary>3000; 

第二种允许在salary上使用索引,而第一种不会。

5,count(*)和count(1)

一般认为count(1)快于count(*),通过对52万条数据的统计发现,两者实际的执行时间相差无几,只有一次count(1)快于count(*),当然对于索引列的执行永远是最快的。

6,字符字段的引号。

如果对于字符字段的索引列不用引号,默认会转型,这样子会导致索引失效。

7,为什么索引列会快?

一直使用索引列,但是为什么索引会快?这是因为索引默认与rowid绑定,这样子执行起来肯定会比较快。




相关TAG标签
上一篇:ORACLE AUTHID DEFINER与AUTHID CURRENT_USER介绍
下一篇:Oracle调整顾问(SQL Tuning Advisor 与 SQL Access Advisor )
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站