网站大量收购独家精品文档,联系QQ:2885784924

【每日一步】SQL编写时注意的几个问题.doc

【每日一步】SQL编写时注意的几个问题.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着,数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。 系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性。 1. 尽量避免is null和is not null的写法 针对某条查询要找出值不为空的数据,使用is not null非常方便,但使用全表扫描来查询所得数据。 eg: 使用索引: 使用is not null 一个只查询一条数据就得出结果 一个要全部扫描得出结果 2. 尽量不要使用联接列的查询方式(查询列上有索引仍然全表扫) select * from employss where first_name||||last_name =Beill Cliton; 应该分开写: Select * from employs where last_name = ‘Cliton’ and first_name = ‘Beill’; 3. 带通配符(%)的like语句 select * from employee where last_name like %cliton%; 这里由于通配符(%)在搜寻词首出现,所以Oracle系统不使用last_name的索引。在很多情况下可能无法避免这种情况,但是一定要心中有底,通配符如此使用会降低查询速度。然而当通配符出现在字符串其他位置时,优化器就能利用索引。在下面的查询中索引得到了使用: select * from employee where last_name like cliton%; 4. Order by子句应尽量少用 任何order by子句中包含非索引字段都会大大降低查询速度,在order by子句中使用表达式排序更是雪上加霜,应避免。 小数据量从直观上感觉不到差异,海量数据就能体现出来 Eg: 使用Order by子句后: 5. 使用not,等类似查询 检索某列的值不等于某个值,sql语句写的复杂,查询效能反而提高 Eg: select * from employs where salary 3000; 如果salary列上有索引,如上查询仍然执行全表扫 Select * from employs where salary = 3000 or salary 3000; 如上查询就会走索引,查询出相应结果。

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档