- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈如何优化SQL语句提高数据库系统效率
陈庆1
(1.扬州市中医院,江苏省扬州市,225009)
摘要:对于大型的企业或部门来说,每天都需要处理大量的数据业务,数据库系统的设计变的异常复杂,而数据库的性能的好坏直接影响到各项业务能否顺利进行。然而数据库优化涉及到许多方面,如:良好的系统和数据库设计;优质的SQL语句编写;合适的数据表索引设计等,甚至包括各种硬件因素,如:网络性能;服务器的性能;操作系统的性能等。如果只想通过升级硬件系统来提升性能将会付出很大的经济代价,通过优化SQL语句的编写提升数据库性能会是一个不错的选择。
关键词:数据库设计;数据库系统;数据库性能;SQL语句;优化
1 引言
SQL(Structured Query Language)结构化查询语言,是一种高级的非过程化编程语言它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化器,提高系统的性能。增加索引也有许多不利的方面。第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。IN(NOT IN)与EXISTS(NOT EXISTS)操作符的区别
我们在调用数据的时候会将一列和一系列值相比较,最简单的办法就是在WHERE子句中使用子查询,而在WHERE子句中有两种方式的子查询。下面以zy_dxsfls,zy_brzlls两个表为例,如下所示:
第一种方式使用IN操作符,
Select a.blh,a.sfks,a.sfrq,a.yzm,a.zfje,a.xzys
From zy_dxsfls a
where a.blh in (select b.blh from zy_brzlls b where b.csrq= 1970-1-1);
第二种方式使用EXIST操作符,
Select a.blh,a.sfks,a.sfrq,a.yzm,a.zfje,a.xzys
From zy_dxsfls a
where exists (select 1 from zy_brzlls b where b.blh=a.blh and b.csrq=1970-1-1)。
虽然两种方法得出的结果是一样的,但是使用的时候却是有区别的。IN操作符适合于zy_brzlls表大而zy_dxsfls表小的情况EXISTS操作符适合于zy_brzlls表小而zy_dxsfls表大的情况。、=、、=)操作符
??以大于操作符和大于等于操作符为例,它们能实现相同的功能,但是对它们优化之后会有不同的效果。如一个表有100万记录,有一个数值型字段“A”,A=0,A=1的记录30万行,A=2的记录有39万行,A=3的记录有1万行。那么执行A2与A=3的效果就有很大的区别了,因为 A2时数据库会先找出为2的记录再进行比较,而A=3时数据库则直接找到等于3的记录,所以选择好的比较条件会提高数据库的执行效率。
4.1.3 尽量少用UNION操作符UNION操作符是用来合并查询结果的,最常见的是过程表与历史表在先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致。采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。IS NULL(IS NOT NULL)操作符
NULL值即空值的意思,根据数据库的特性,是不能使用包含NULL值的字段作为索引的,即使对该字段建立了索引,只要某行上面有NULL值,该字段就不能使用索引。但是我们可以使用变相方法来表示NULL值,如将某行上的NULL值用0表示,这样WHERE 条件语句“a is null”就可以改成“a=
您可能关注的文档
最近下载
- 2025年甘肃省武威市凉州区发放镇招聘专业化管理大学生村文书笔试备考试题及答案解析.docx VIP
- 中国宫腔镜诊断与手术临床实践指南(2023年).pptx VIP
- 2025年法律职业资格(客观题)真题含答案.docx VIP
- 展板版式设计.ppt VIP
- 2025年全国司法考试客观题试卷及答案.docx VIP
- 职能科室对医技科室医疗质量督查记录表(检验科、放射科、超声科、功能科、内镜室).pdf VIP
- 中国宫腔镜诊断与手术临床实践指南(2023版).pptx VIP
- 血透患者心理健康宣教ppt.pptx
- 【新教材】英语必修第二册(新人教版)教材习题参考答案.pdf VIP
- 手机数据恢复精灵误删信息轻松恢复.PDF VIP
文档评论(0)