- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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;
如上查询就会走索引,查询出相应结果。
您可能关注的文档
最近下载
- 渤海稠油油田聚合物驱高效开采技术.doc
- 重症患者的早期康复课件.pptx
- 中国南方电网公司招聘笔试题库2025.pdf
- 电气工程基础课程设计报告-110kV变电站电气系统初步设计.doc
- 化工常用阀门介绍.doc VIP
- 新仁爱科普2024版英语七年级上册Unit 1 Let's be friends大单元整体教学设计.docx
- 高考数学五年(2020-2024)真题《空间向量与立体几何(解答题)》分类汇编.docx
- 香港街头最不缺的就是美女,来自世界各地.pdf VIP
- 高考数学五年(2020-2024)真题《空间向量与立体几何》分类汇编.docx
- 2024年考务人员培训系统考试参考答案.docx VIP
文档评论(0)