数据库优化方案.docxVIP

  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文档。上传文档
查看更多
数据库优化方案 高效地进行SQL语句设计: 往常状况下,能够采纳下边的方法优化SQL对数据操作的表现: (1)减少对数据库的查问次数,即减少对系统资源的恳求,使用快照和显形图平散布式数据库对象能够减少对数据库的查问次数。 (2)尽量使用相同的或特别近似的SQL语句进行查问,这样不单充分利用SQL共享池中的 已经剖析的语法树,要查问的数据在SGA中命中的可能性也会大大增添。 3)防止不带任何条件的SQL语句的履行。没有任何条件的SQL语句在履行时,往常要进行FTS,数据库先定位一个数据块,而后按次序挨次查找其余数据,关于大型表这将是一个 漫长的过程。 4)假如对有些表中的数占有拘束,最幸亏建表的SQL语句用描绘完好性来实现,而不是用SQL程序中实现。 一、操作符优化: 1、IN操作符 用IN写出来的SQL的长处是比较简单写及清楚易懂,这比较适合现代软件开发的风格。 可是用IN的SQL性能老是比较低的,从Oracle履行的步骤来剖析用IN的SQL与不用 SQL有以下差别:  IN的 ORACLE试图将其变换成多个表的连结,假如变换不可功则先履行IN里面的子查问,再 查问外层的表记录,假如变换成功则直接采纳多个表的连结方式查问。因而可知用IN的SQL 起码多了一个变换的过程。一般的SQL都能够变换成功,但关于含有分组统计等方面的SQL 就不可以变换了。在业务密集的SQL中间尽量不采纳IN操作符。 优化 In时是按  sql时,常常遇到使用in的语句,必定要用 Or的方式做的,即便使用了索引也会很慢。  exists把它给换掉,因为  Oracle在办理 2、  NOTIN操作符 强列介绍不使用的,因为它不可以应用表的索引。用  NOTEXISTS或(外连结  +判断为空) 方案取代 3、ISNULL或  ISNOTNULL操作 判断字段能否为空一般是不会应用索引的,因为B树索引是不索引空值的。 用其余相同功能的操作运算取代,aisnotnull改为a0或a’’等。 不一样意字段为空,而用一个缺省值取代空值,如业扩申请中状态字段不一样意为空,缺省 为申请。 防止在索引列上使用ISNULL和ISNOTNULL防止在索引中使用任何能够为空的列, ORACLE将没法使用该索引.关于单列索引,假如列包括空值,索引中将不存在此记录.关于 复合索引,假如每个列都为空,索引中相同不存在此记录.假如起码有一个列不为空,则记 录存在于索引中.举例:假如独一性索引成立在表的A列和B列上,而且表中存在一条记录 的A,B值为(123,null),ORACLE将不接受下一条拥有相同A,B值(123,null)的记录(插入).然 而假如全部的索引列都为空,ORACLE将认为整个键值为空而空不等于空.所以你能够插入 1000  条拥有相同键值的记录  ,自然它们都是空  !因为空值不存在于索引列中  ,所以  WHERE  子 优选文档 句中索引列行空比将使ORACLE停用索引. 低效:(索引无效) SELECT?FROMDEPARTMENTWHEREDEPTCODEISNOTNULL; 高效:(索引有效) SELECT?FROMDEPARTMENTWHEREDEPT_CODE=0; 4、及操作符(大于或小于操作符) 大于或小于操作符一般状况下是不用整的,因它有索引就会采纳索引找,但有的 状况下能够它行化,如一个表有100万,一个数型字段A,30万的A=0, 30万的A=1,39万的A=2,1万的A=3。那么行A2与A=3的成效就有很大的区了,因A2ORACLE会先找出2的索引再行比,而A=3ORACLE 直接找到=3的索引。 用=代替 高效: SELECT?FROMDEPARTMENTWHEREDEPT_CODE=0; 低效: SELECT*FROMEMPWHEREDEPTNO3 二者的区在于,前者DBMS将直接跳到第一个DEPT等于4的尔后者将第一定位 到DEPTNO=3的而且向前描到第一个DEPT大于3的. 5、LIKE操作符: LIKE操作符能够用通配符,里面的通配切合可能达到几乎是随意的,可是 假如用得不好会生性能上的,如LIKE‘%5400%’种不会引用索引,而LIKE ‘X5400%’会引用范索引。一个例子:用YW_YHJBQK表中号后边的 号可来号YY_BHLIKE‘%5400%’个条件会生全表描,假如改成YY_BH LIKE’X5400%’ORYY_BHLIKE’B5400%’ 会利用YY_BH的索引行两个范的,性能必定大大提升。 6、用EXISTS替DISTINCT: 当提交一个包括一多表信息(比方部表和雇表)的,防止在SELECT子句中使 用DISTINCT.一般能够考用EXIST替,EXISTS使更快速,因RD

文档评论(0)

187****3476 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档