动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Oracle教程 ]的信息

本月文章推荐
.Oracle数据库系统使用经验六则.
.PL/SQL Packages and Types Refe.
.如何快速启动oracle 8i SQL-Plus?.
.视图的概念.
.ORACLE 9I FOR AIX 5L 的安装.
.Oracle AS 10g 下部署 ColdFusio.
.如何计算当前目录下的文件数和目.
.用Oracle并行查询发挥多CPU的威力.
.rebuild和rebuild online的区别.
.利用 Ghost 复制您的Linux 系统.
.Oracle数据库技术(5).
.SQL*PLUS命令的使用大全(1).
.Oracle安装(linux)小结.
.Data Blocks and Freelists (fro.
.oracle sqlplus 格式化输出的命令.
.利用数据库效用给UNIX命名管道.
.数据库名DB_name实例名instance全.
.ORACLE应用中常见的傻瓜问题1000.
.对Foreign Key的进一步认识.
.Oracle如何配置逻辑备用数据库.

SQL优化之操作符篇

发表日期:2008-2-9 |


    今天霄汉的SQL优化培训收获颇丰,摘要出一部分.     1.1 IN 操作符     用IN写出来的SQL的优点是比较轻易写及清楚易懂,这比较适合现代软件开发的风格。     但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:     ORACLE试图将其转换成多个表的连接,假如转换不成功则先执行IN里面的子查询,再查询外层的表记录,假如转换成功则直接采用     多个表的连接方式查询。     由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。     推荐方案:在业务密集的SQL当中尽量不采用IN操作符而使用EXISTS。     1.2 NOT IN操作符     此操作是强列推荐不使用的,因为它不能应用表的索引。     推荐方案:用NOT EXISTS代替     1.3 <> 操作符(不等于)     不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。     推荐方案:用其它相同功能的操作运算代替,如     a<>0 改为 a>0 or a<0
    a<>’’ 改为 a>’’     1.4 IS NULL 或IS NOT NULL操作(判定字段是否为空)     判定字段是否为空一般是不会应用索引的,因为B树索引是不索引空值的。     推荐方案:     用其它相同功能的操作运算代替,如     a is not null 改为 a>0 或a>’’等。     不答应字段为空,而用一个缺省值代替空值。     1.5 > 及 < 操作符(大于或小于操作符)     大于或小于操作符一般情况下是不用调整的,因为它有索引就会采用索引查找,但有的情况下可以对它进行优化,     如一个表有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的记录     索引。     1.6 LIKE操作符     LIKE操作符可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是假如用得不好则会产生性能上的问题,     如LIKE ‘%5400%’ 这种查询不会引用索引,而LIKE ‘X5400%’则会引用范围索引。     一个实际例子:用YW_YHJBQK表中营业编号后面的户标识号可来查询营业编号 YY_BH LIKE ‘%5400%’ 这个条件会产生全表扫描,     假如改成YY_BH LIKE ’X5400%’ OR YY_BH LIKE ’B5400%’ 则会利用YY_BH的索引进行两个范围的查询,性能肯定大大提高。     1.7 UNION操作符     UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。     select * from gc_dfys
    union
    select * from ls_jg_dfys     这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,假如表数据量大的话可能会     导致用磁盘进行排序。     推荐方案:     采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。
    select * from gc_dfys
    union all
    select * from ls_jg_dfys     1.8 group by用法     Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。     select topicid,userid,sum(counter) from cis_topic_stat group by rollup(topicid,userid);     也就是说,假如是ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行GROUP BY,     然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作。     select topicid,userid,sum(counter) from cis_topic_stat group by cube(topicid,userid);     和ROLLUP相比,CUBE又增加了对STATUS列的GROUP BY统计。     假如是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),     最后对全表进行GROUP BY操作。     1.9 如何使用Hint提示     在select/delete/update后写/*+ hint */     如 select /*+ index(TABLE_NAME INDEX_NAME) */ col1...     注重/*和+之间不能有空格     如用hint指定使用某个索引     select /*+ index(cbotab) */ col1 from cbotab;
    select /*+ index(cbotab cbotab1) */ col1 from cbotab;
    select /*+ index(a cbotab1) */ col1 from cbotab a;     其中     TABLE_NAME是必须要写的,且假如在查询中使用了表的别名,在hint也要用表的别名来代替表名;     INDEX_NAME可以不必写,Oracle会根据统计值选一个索引;     假如索引名或表名写错了,那这个hint就会被忽略;
上一篇:PL/SQL中如何传递字符串变量给in 人气:505
下一篇:检查SQL语句是否应用了索引 人气:898
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-4 LPLY CMS 网站管理系统 v5.0
2008-9-4 缤纷互动视频交友 v3.01.902
2008-9-4 ADN视频收藏专家 v3.0 bulid 080
2008-9-4 天空网络电影系统SKYUC v2.5.6 简
2008-9-4 Web Wiz Rich Text Editor(文本编
2008-9-4 幻影动漫网视频系统(Ppdong) v1.
2008-9-4 乐维电脑在线DIY配置系统
2008-9-4 老樊文章管理系统SQL版
2008-9-4 ASP.NET 2.53 缩略图水印组件源码
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵