oracle数据优化.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
oracle数据优化

在今天的情势下 网站数据量越来越大,数据库面临的压力也越来越大,这就要我们用更少的时间去处理更多的数据,于是就有了数据优化意识。 将数据和索引放到不同表空间 没有将表数据和索引数据存储到不同的表空间中,而不加区别地将它们存储到同一表空间里。这样,不但会造成I/O竞争,也为数据库的维护工作带来不便。 合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率 。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引 的使用要恰到好处,其使用原则如下: 在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连 接的字段则由优化器自动生成索引。 在频繁进行排序或分组(即进行group by或order by操作)的列 上建立索引。 在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少 的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女 ”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查 询效率,反而会严重降低更新速度。 建立索引语法 CREATE [UNIQUE] INDEX 索引名 ON 表名 (列名) ???? TABLESPACE 表空间名; 使用临时表加速查询 把表的一个子集进行排序并创建临时表,有时能加速查询。它有助于避 免多重排序操作,而且在其他方面还能简化优化器的工作。例如: SELECT cust.name,rcvbles.balance,……other columns FROM cust,rcvbles WHERE cust.customer_id = rcvlbes.customer_id AND rcvblls.balance 0 AND cust.postcode “98000” ORDER BY cust.name 如果这个查询要被执行多次而不止一次,可以把所有未付款的客户找出 来放在一个临时文件中,并按客户的名字进行排序: SELECT cust.name,rcvbles.balance,……other columns FROM cust,rcvbles WHERE cust.customer_id = rcvlbes.customer_id AND rcvblls.balance 0 ORDER BY cust.name INTO TEMP cust_with_balance 然后在临时表中查询: SELECT * FROM cust_with_balance WHERE postcode “98000” 避免使用null值判断 如果使用null值判断将导致引擎放弃使用索引而进行全表扫描如: select id from t where num is null; 在这种情况下可以将num默认值设为0,确保表中没有null值, 然后:select id from t where num =0; 如果是varchar2型的话可以根据情况设定默认值, 这样避免了全表的扫描。 字符对数据的影响 通配符‘%’当通配符出现在搜索词首时,Oracle优化器不使用索引。 Select * from employee where name like ‘%Z%’; Select * from employee where name like ‘Z%’; 第二句的执行效率会比第一句快,但查询结果集可能会不同。 DISTINCT总是建立一个排序,所以查询速度也慢。 使用它时就不要用GROUP BY In 和not in 也要少使用,使用in 使系统无法索引,只能直接搜索 select id from t where num in(1,2,3); 对于连续的数字,使用between: select id from t where num between 1 and 3; 有时可以使用exists代替in 避免在where 后面出现表达式 Select id from t wherer num/2=20; 应该改为:Select id from t where num=20*2; 使用视图加速查询 把一个表的子集进行排序并创建视图,有时能加速查询,它有助于多重排序 SELECT cust.name,rcv

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档