SQL应用与优化.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录 一、Sql应用 查询语句 函数 多表查询和子查询 DML语句应用 二、Sql优化 SQL语句的优化器 调优SQL语句的相关工具 影响CBO模式的统计信息 SQL语句优化的基本原则 RBO模式下的规则和建议 SQL语句中的hint 写SQL语句的一些提示 三、附录: 常见Oracle HINT的用法 监控数据库性能的SQL SQL应用 二、函数 使用中注意单行函数和多行函数 CASE expression CASE expr WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr] END DECODE function DECODE(col|expression, search1, result1 [, search2, result2,...,] [, default]) 示例: update serv_biz_code set carry_type = case when service_type = MAS then SMS when service_type = 400 then VOICE else carry_type end; update serv_biz_code set carry_type = case service_type WHEN MAS then SMS when 400 then VOICE else carry_type end; 好处:只使用一次全表扫描。简单明了。 SQL应用 三、多表查询和子查询 注意:避免笛卡尔积 建议:对表使用别名,关联相关的字段。 外连接使用(+) Oracle9i开始支持,sql 99标准。 SQL应用 示例 对NOT in 的改进语句的几种方法 SELECT s.ec_code FROM serv_biz_code s WHERE s.ec_code NOT IN (SELECT t.customer_code FROM bill_item_usage_detail t ) SELECT s.ec_code FROM serv_biz_code s WHERE NOT EXISTS (SELECT 1 FROM bill_item_usage_detail b WHERE s.ec_code = b.customer_code ) SELECT s.ec_code FROM serv_biz_code s , bill_item_usage_detail b WHERE s.ec_code = b.customer_code(+) AND b.customer_code IS NULL 多列的子查询( ,) in (,) SELECT s.ec_code,duct_code FROM serv_biz_code s WHERE (s.ec_code,duct_code) NOT IN (SELECT t.customer_code,duct_code FROM bill_item_usage_detail t ) 其他DML中的子查询 update /*+ ROWID(bb) */ ur_sms_200904_t bb set bb.charge1 = ( select b.charge1 from jxj_rater_urb where bb.rowid = b.id ) where exists (select 1 from jxj_rater_uraa where aa.id = bb.rowid) ; 注意: aa.id和bb.rowid 的值是物理地址,如果表或记录变更过该语句讲实效。 Rowid 和rownum 的使用 rowmum的数据具有随机性,可以通过建立子查询的视图,根据固定的关键字进行order by 后再使用,尽量保证数据唯一性。 SQL应用 子查询 单行子查询和多行子查询,注意使用的条件 With as 使用介绍 提高查询的性能,如果一个sql中相同的部分比较多,可以放到一起,执行一个with as 在实际应用中,可以应用到各个环节 SQL应用示例 --数据库为bill数据库,目的为了检查Rater计算结果是否正确,从bill_item_usage_detail表

文档评论(0)

xiaofei2001128 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档