服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

数据库相关--一篇关于优化sql的文章

sql语句: 
是对数据库(数据)进行操作的惟一途径; 
消耗了70%~90%的数据库资源;独立于程序设计逻辑,相对于对程序源代码的优化,对sql语句的优化在时间成本和风险上的代价都很低; 
可以有不同的写法;易学,难精通。 

sql优化: 
固定的sql书写习惯,相同的查询尽量保持相同,存储过程的效率较高。 
应该编写与其格式一致的语句,包括字母的大小写、标点符号、换行的位置等都要一致 

oracle优化器: 
在任何可能的时候都会对表达式进行评估,并且把特定的语法结构转换成等价的结构,这么做的原因是 
要么结果表达式能够比源表达式具有更快的速度 
要么源表达式只是结果表达式的一个等价语义结构 
不同的sql结构有时具有同样的操作(例如:= any (subquery) and in (subquery)),oracle会把他们映射到一个单一的语义结构。 

1 常量优化: 
常量的计算是在语句被优化时一次性完成,而不是在每次执行时。下面是检索月薪大于2000的的表达式: 
sal > 24000/12 
sal > 2000 
sal*12 > 24000 
如果sql语句包括第一种情况,优化器会简单地把它转变成第二种。 
优化器不会简化跨越比较符的表达式,例如第三条语句,鉴于此,应尽量写用常量跟字段比较检索的表达式,而不要将字段置于表达式当中。否则没有办法优化,比如如果sal上有索引,第一和第二就可以使用,第三就难以使用。 

2 操作符优化: 
优化器把使用like操作符和一个没有通配符的表达式组成的检索表达式转换为一个“=”操作符表达式。 
例如:优化器会把表达式ename like 'smith'转换为ename = 'smith' 
优化器只能转换涉及到可变长数据类型的表达式,前一个例子中,如果ename字段的类型是cha

扫描关注微信公众号