[oraclesql语句大全]OracleSQL语句优化技术分析
【shitiku.jxxyjl.com--软件水平学习指南】
操作符优化
in 操作符
用in写出来的sql的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。
但是用in的sql性能总是比较低的,从oracle执行的步骤来分析用in的sql与不用in的sql有以下区别:
oracle试图将其转换成多个表的连接,如果转换不成功则先执行in里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用in的sql至少多了一个转换的过程。一般的sql都可以转换成功,但对于含有分组统计等方面的sql就不能转换了。
推荐方案:在业务密集的sql当中尽量不采用in操作符。
not in操作符
此操作是强列推荐不使用的,因为它不能应用表的索引。
推荐方案:用not exists 或(外连接+判断为空)方案代替
<> 操作符(不等于)
不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。
推荐方案:用其它相同功能的操作运算代替,如
a<>0 改为 a>0 or a<0
a<>’’ 改为 a>’’
is null 或is not null操作(判断字段是否为空)
判断字段是否为空一般是不会应用索引的,因为b树索引是不索引空值的。
推荐方案:
用其它相同功能的操作运算代替,如
a is not null 改为 a>0 或a>’’等。
不允许字段为空,而用一个缺省值代替空值,如业扩申请中状态字段不允许为空,缺省为申请。
建立位图索引(有分区的表不能建,位图索引比较难控制,如字段值太多索引会使性能下降,多人更新操作会增加数据块锁的现象)。
> 及 < 操作符(大于或小于操作符)
大于或小于操作符一般情况下是不用调整的,因为它有索引就会采用索引查找,但有的情况下可以对它进行优化,如一个表有100万记录,一个数值型字段a,30万记录的a=0,30万记录的a=1,39万记录的a=2,1万记录的a=3。那么执行a>2与a>=3的效果就有很大的区别了,因为a>2时oracle会先找出为2的记录索引再进行比较,而a>=3时oracle则直接找到=3的记录索引。
like操作符
like操作符可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,如like ‘%5400%’ 这种查询不会引用索引,而like ‘x5400%’则会引用范围索引。一个实际例子:用yw_yhjbqk表中营业编号后面的户标识号可来查询营业编号 yy_bh like ‘%5400%’ 这个条件会产生全表扫描,如果改成yy_bh like ’x5400%’ or yy_bh like ’b5400%’ 则会利用yy_bh的索引进行两个范围的查询,性能肯定大大提高。
本文来源:https://shitiku.jxxyjl.com/ruanjianshuipingxuexizhinan/49018.html
-
如何应对网络安全|应对网络安全新要求详细阅读
随着网络安全向更高层次的发展,其趋势已经从基础的网络层建设开始向应用层和内容层建设过渡,北京网康科技的互联网控制网关系列产品就是针对国内网络安全市场的新需求,在2005年推出的面向应用层和内容层的网络内容安全产品,目前已经得到用户和经销商的广泛认可。为了让更多的人认识内容安全的重要性和体验...
-
【交换机连接交换机】交换机系列培训:交换机如何工作(二)详细阅读
交换是当前网络技术发展的方向。路由技术是交换网络的重要组成部分。交换网络中路由技术选用得正确与否,将直接影响到网络的整体性能的好坏。因此路由技术越来越受到生产厂家与网络设计人员的重视。 一、三种路由技术 目前交换网络中的路由技术有三种,其中第一种是最为保守的方法,即第三...
-
[计算机软件水平考试与计算机四级]计算机软件水平考试辅导:c++学习要点详细阅读
c++学习要点 1 传指针时,我们可以通过指针来修改它在外部所指向的内容。但如果要修改外部指针所指向的对象是不可能的。例如传递外部指针到函数内来分配空间,必须传递指针的指针或指针的引用。 2 char carry[10] = {0}; 编译器会将其后所有的东西都置0; 3 函数返回值为con...
-
网络工程师和网络设计师|网络设计师考试后的一些感想详细阅读
这是我第一次贴这样长的帖子。望各位考过的朋友帮助我补充不足,以利于朋友们通过考试!这篇文档记录了我参 年度计算机软件专业技术资格和水平考试网络设计师部分考试后的一些感想。我幸运的通过了(考试 考号:011606800229,上午成绩 45 ,下午成绩46 ;合格标准:网络设计师,总分为9...