Oracle SQL语句优化技术解析[MSSQL防范]
本文“Oracle SQL语句优化技术解析[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
操作符优化
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的索引举行两个范围的查询,性能必定大大提高.
本文地址: | 与您的QQ/BBS好友分享! |