关于SQL语句的优化方式
日期:2007年4月17日 作者: 查看:[大字体 中字体 小字体]-
大家都在讨论关于数据库优化方面的东东,刚好参与开发了一个数据仓库方面的项目,以下的一点东西算是数据库优化方面的学习+实战的一些心得体会了,拿出来大家共享。欢迎批评指正阿!
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字段的类型是CHAR(10), 那么优化器将不做任何转换。
一般来讲LIKE比较难以优化。其中:
~~ IN 操作符优化:
优化器把使用IN比较符的检索表达式替换为等价的使用“=”和“OR”操作符的检索表达式。
例如,优化器会把表达式ename IN ('SMITH','KING','JONES')替换为
ename = 'SMITH' OR ename = 'KING' OR ename = 'JONES‘~~ ANY和SOME 操作符优化:
优化器将跟随值列表的ANY和SOME检索条件用等价的同等操作符和“OR”组成的表达式替换。
例如,优化器将如下所示的第一条语句用第二条语句替换:
sal > ANY (:first_sal, :second_sal)
sal > :first_sal OR sal > :second_sal
优化器将跟随子查询的ANY和SOME检索条件转换成由“EXISTS”和一个相应的子查询组成的检索表达式。
例如,优化器将如下所示的第一条语句用第二条语句替换:
x > ANY (SELECT sal FROM emp WHERE job = 'ANALYST')
EXISTS (SELECT sal FROM emp WHERE job = 'ANALYST' AND x > sal)~~ ALL操作符优化:
优化器将跟随值列表的ALL操作符用等价的“=”和“AND”组成的表达式替换。例如:
sal > ALL (:first_sal, :second_sal)表达式会被替换为:
sal > :first_sal AND sal > :second_sal
对于跟随子查询的ALL表达式,优化器用ANY和另外一个合适的比较符组成的表达式替换。例如 - [1] [2] [3] [4] [5] 下一页
-
- 关于SQL语句的优化方式 相关文章:
- ·把网页保存为图片 换种方式收集有用资料
- ·多个CSS样式表争夺特定选择符的控制权
- ·轻松方便 三招两式抵制IE的顽固病毒
- ·诺顿杀毒软件正式版用户找回密码的方法
- ·Photoshop教程 图层样式的学习
- ·下载:Opera 9.25最终正式版
- ·Web2.0在中国步入歧途 缺赢利模式VC有错
- ·免费绘图软件Paint.NET推出3.2正式版
- ·Word 2007里就能算算式 内置工具使用更方便
- ·Dreamweaver MX 2004的PPT格式课件
- 关于SQL语句的优化方式 相关软件
- ·行会2之维京霸主-模拟方式免CD补丁
- ·医院大亨-模拟方式免CD补丁
- ·《古墓丽影十周年纪念版》正式版地图任我游工具
- ·《冰封王座》地图:英雄无敌圣战之日V1.07正式版
- ·《冰封王座》地图:幻想群侠传II-3.86正式版
- ·《征途》正式版完整客户端下载
- ·《踢踢球》公测正式版完整客户端
- ·《Y.A.S.U》v1.3.7070正式版
- ·《春秋Q传》正式区更新包0.5.18-0.5.22
- ·暗黑破坏神式战斗《聊斋志异》试玩
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:XML 问题: 超越DOM(轻松使用 DOM 的技巧和诀窍)
精品推荐
热点TOP10
- ·Transact-SQL语句总汇
- ·无限级分类的非递归实现(存储过程版)
- ·列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- ·什么是SQL注入法攻击
- ·学习SQL语句之SQL语句大全
- ·SQL存储过程的概念,创建,调用,管理,删除,优点
- ·客户端回调实现gridView无刷新分页
- ·关于SQL语句的优化方式
- ·精妙SQL语句收集
- ·2台服务器数据库如何同步?
- ·SQL分页语句
- ·Delphi程序执行时实时生成报表
- ·SQL语句参考及记录集对象详解
- ·ADO连接数据库字符串大全
- ·VB.NET的数据库基础编程(1)
- ·sqlldr加载数据到不同表的问题
- ·解决SQL Server常见的七个经典问题
- ·SQL数据库高级教程:学习 SQL 函数
- ·SQL数据库高级教程:学习 SQL IN
- ·解析用SSMA移植Acceses到SQL几点问题
特别推荐
- ·学习SQL语句之SQL语句大全
- ·数据备份失败的五个原因及解决办法
- ·解决SQL Server常见的七个经典问题
- ·SQL存储过程的概念,创建,调用,管理,删除,优点
- ·带你轻松接触13个数据库术语
- ·如何恢复系统数据库如何恢复系统数据库?
- ·通过实例讲解由浅入深学会存储过程
- ·学会三个范式快速成为数据库设计的高手
- ·SQL数据库应聘人员面试时经常被问的问题
- ·问答:查询分析器不能单步调试的的原因
- ·数据库基础知识:SQL中的IIF语句详解
- ·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
- ·你知道吗?优化数据库前的十大问题
- ·自动备份注意事项让你远离误删数据噩梦
- ·关于MSSQL数据库日志满的快速解决办法
- ·SQL安全设置攻略
- ·SQL注入的不常见方法
- ·关于SQL语句的优化方式
- ·SQL优化34条
- ·查询及删除重复记录的方法
