对医院数据库系统中SQL语句优化的探讨

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:js_123
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:经过多年的信息化建设,我们医院变成了全面信息化的现代化医院。特别近两年来,医院信息系统(HIS)、实验室信息管理系统(LIS)以及影像归档和通信系统(PACS)系统的上线,大大增加了数据库的数据量,影像归档和通信系统(PACS)的图片传输对网絡速度也提出了很高的要求。因此,SQL语句的优化就显得格外重要了。
  关键词:医院信息系统;数据库;SQL
  中图分类号:TP393文献标识码:A文章编号:1007-9599 (2012) 02-0000-02
  Discussion on the Optimization of SQL Statements in the Hospital Database Systems
  Lu Fangjian
  (Yangjiang City,Guangdong Province Hospital of People,Yangjiang529500,China)
  Abstract:After years of information construction,our hospital has become a comprehensive information technology of a modern hospital.Especially in the past two years,HIS,LIS and PACS system political line,greatly increased the amount of data of the database,and also made high demands on the PACS image transfer speed of the network.Therefore,the optimization of the SQL statement is particularly important.
  Keywords:HIS;Database;SQL
  医院经过多年的信息化建设,由原来简单的以收费为主、各医技科室独立系统变成了全院全面信息化、甚至看病无纸化的程度。特别近两年来,HIS、LIS以及PACS系统的上线,大大增加了数据库的数据量,PACS系统的图片传输对网络速度也提出了很高的要求,医院一天的业务数据由原来的1G不到,发展成现在的10G以上,而这庞大的数据,每天的运行,都让服务器产生很大的压力。特别在上午十点到十二点这段时间,由于门诊医生站的大量使用,以及医技部门的频繁检查,使得系统运行速度越来越慢,甚至出现超时、假死机甚至数据出错等现象,这就严重影响到医院的正常工作了。当我们在服务器上找寻影响效率原因的时候,发现有些查询语句耗时特别多,使用的频率也不低。经过研讨发现,这些耗时多的语句可以进行优化,优化后的耗时明显降低了。在大量优化语句工作后,总结出了些经验,以此分享。
  一、优化的前提:需求分析要尽量详细
  数据库模式的设计是数据库设计的基础,要设计出一个好的数据库系统,首先要从需求开始,在符合我们现实条件的前提下,把需要的对数据处理的功能都整合进去,并且要通过不断的修改和反复的测试才能使之完善。
  二、优化的核心是规范化的应用
  关系模式的规范化,是在数据库的设计周期中,对逻辑结构设计优化的必要步骤。什么是关系规范化呢,它是指按统一标准对关系进行优化,从而最大程度上能消除关系数据库中的数据冗余、添加、删除和修改等操作异常,以提高关系的质量。
  当我们没有处理好关系模式的时候,就会出现删除异常、插入异常和冗余度大等问题,所以这一步骤非常重要。
  在规范化理论中,关系的各属性是相互关联、互相制约、互相依赖的,成为一个严谨的整体。按属性间相关的关系,可大概分为连接依赖、多值依赖和函数依赖。按函数依赖又可分成传递依赖、完全依赖和部分依赖,由以上的依赖关系可分出五种范式,分别为第1范式、第2范式、第3范式、BC范式和第4范式,如果在关系模式中存在这些范式,就可在不同程度上避免更新异常、插入和冗余等问题。
  进行规范化做法是,首先确定数据依赖,按照数据依赖的理论,逐一分析这组关系模式,确定他们属于第几范式。其次进行模式分解,逐步消除非主属性对码的传递依赖和部分依赖。在分解过程当中必须遵守相互独立原则和无损分解原则。
  无损分解指的是对关系模式分解时,原关系模型下任一合法的关系值在分解之后应能通过自然联接运算恢复起来。
  相互独立是指分解后的新关系之间相互独立,对一个关系内容的修改不应该影响到另一关系。
  三、优化技术在查询中的应用
  优化技术在查询中的重要性体现得更突出,虽然DBMS也能对查询进行优化,但是查询计划本身的结构却是对查询效率有着从根本上的影响。我们要区分查询计划和查询规划的却别,前者是用户所提交的SQL语句的集合,后者是经过优化处理之后所产生的语句集合。现在大部分数据库产品都是采用基于代价的优化方法,它对查询规划代价的估计,都是根据系统字典表的信息得到来,再择优而取。即使现在的数据库查询优化做得再好,根本的SQL语句差了,效率都无法提高上去的。所以为了查询语句有高的执行效率,我们总结了以下心得:
  (一)索引使用的时候要恰到好处
  索引,就是为提高查询效而生的,它是重要的数据结构,而IBM的ISAM索引结构就是主流数据库产品所采用的索引结构。其有以下使用原则:
  1.在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不建立索引。
  2.在频繁进行排序或分组的列上建立索引。
  3.在经常进行连接、但没指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。例如在zy_bh0表的“在院情况”列上,仅有“在院”和“出院”两种不同情况的代表值,就不必要使用索引。一旦强行建立索引,不仅提高不了查询效率,反而使更新速度严重降低。当然,当待排序的列有多个,我们还可以在这些列上建立复合索引。
  (二)对排序进行简化甚至避免
  应当尽量避免或简化对大型表进行重复的排序。为了优化器避免排序的步骤,可以利用索引自动以适当的次序产生输出。
  (三)要消除顺序存取大型表行数据的情况
  对表的顺序存取,如果是在嵌套查询中,那么其查询效率将会降低好多。对连接的列进行索引是避免这种情况的主要方法。当然使用并集也是一个好办法。
  (四)尽量避免出现相关子查询
  如果一个列的标签在主查询和where子句中的查询中同时出现,当主查询中的列值改变后,子查询要重新查询一次。当查询嵌套层次越多时,效率就越低,所以要尽量避免子查询。
  (五)巧妙避开正规表达式的使用
  关于正规表达式,例如LIKE就是支持通配符匹配。要知道通配符匹配起来是非常耗时的。如SELECT*FROM zy_bfyz0 WHERE bhid LIKE“98___”
  即便在bhid字段上建了索引,也还是采用顺序扫描法的。当我们把语句改为SELECT*FROM zy_bfyz0r WHERE bhid>“98000”,执行起来就大大不同了,它能利用索引来查询,大大提高了速度。
  (六)加速查询还可以使用临时表
  在大多数情况下,把表的一个子集创建临时表并进行排序,能加快查询的,因为它能避免多重排序的操作。
  (七)减少使用or的次数
  一旦使用or,就会引起对全表的扫描,这就使查询效率大大降低了。
  (八)不要盲目多提取无用字段
  实践证明,使用“select字段1,字段2,字段3........”的提取速度比使用“select*”的要快。
  四、案例分析
  案例一:药房系统慢。我院中心药房的药师反映在系统自动计划这个功能执行起来特别慢,有时候打开时候甚至超过20分钟,严重影响了工作,当我们分析器结构时,发现了关键字“not in”,通过语法结构转换,用“not exists”代替,结果运行速度得到很大的提升。
  案例二:显示收费员个人报表慢。收费处工作人员进入HIS系统中,有这样一个功能,当他们进行做个人日报表时,可以查看到哪些收费人员还没有做当天的日报表,就是这个查看功能的响应速度非常慢,经过对其收sql语句的分析,发现里面存在不合理的子查询,经过语法结构转换,把子查询去掉,结果改功能能在1秒钟内就查处结果了。
  案例三:没索引导致很慢。在HIS系统的医生站中,有一个病号信息查询功能,这个界面能通过惟一识别的住院号来查找所有来医院住过院的病人的信息,无论是在院还是出院的,都能查到,这个功能是查找zy_bh0的表,这个表非常庞大。在没有建立索引的情况下,我们查找一个病人需要10分钟才能找到,因为当我们输入一个住院号的时候,需要在zy_bh0这表的上千万条数据中逐一对照,效率非常低;通过建立合理的索引,再通过此功能查找病人,时间已经缩短为0.5秒了。所以说,在大的表中,通过建立合理的索引,查询的效率能得到很大的提高的。
  五、小结
  通过上面的这些优化数据库sql语句心得的总结,我们发现,其优化的方式虽然简单,但是小小的改动,能提高很大的效率。所以,为了达到数据库高效地运行,我们要认真分析语句中的执行效率问题,通过综合的考虑,具体问题具体分析,不要乱套模式,因为每一个表都有最适合的优化方法,当此表经过一段时间变化后,原来的方法很可能已经不是适合的了,又要重新思考其优化的办法。所以说,数据库的优化要细心,更要有耐心。
  参考文献:
  [1]陳倩文.医院数据库系统的性能分析及优化经验[J].中国数字医学,2009,4(8):66-68
  [2]马辰.医院信息系统数据库的性能优化和故障维修[J].医疗装备,2009,6:69-70
  [3]王勇.基于SQL数据库的性能优化问题分析[J].电脑知识与技术,2009,15:1004-1007
  [4]殷美桂.谈关系数据库查询优化方法[J].电脑知识与技术,2008,16:1188-1189
  [5]骆正云,宋念东,俞国霖.医院HIS系统SQL SERVER数据库性能优化[J].医疗卫生装备,2005,26(2):32-33
  [6]刘兆良,陈中举,刘方.SQL SERVER数据库查询优化技术[J].科技信息,2007,24:377-378
  [作者简介]卢方建(1986.10-),男,籍贯:广东阳江,职称:软件设计工程师,学历:本科,学位:学士。
其他文献
所谓“两学”,是指课前自学和课内自学;“一教”就是教师的点拨、引导;“一补”指知识的巩固、强化。在这四个环节中,每一环节又分为“课前预习——课内检查预习;学生自学—
结合烹饪教学实践,笔者认为,我省中职烹饪教学改革应抓好提高专业教师整体素质、掌握并运用好现代信息技术、改革现行烹饪教材等三个环节的工作。
目前在中国的众多电视节目形态中,电视谈话类节目因为其叙述话题亲民、受众参与度高,受到了观众的喜爱。但是随着谈话类节目的增多,发展逐渐遭遇瓶颈,千篇一律的模式、谈话话
市级电视台是重要的基层媒体,其新闻节目对区域舆论其引导作用,是政府政策宣传的重要媒介。但是,一些市级电视台新闻节目自身经营方式老旧,素材少、形式单一、内容枯燥,受新
一个几何图形沿着某条直线或一个点翻折过来,所得的图形不仅保持了原来图形的形状、大小,而且还产生了与原图形对称的图形关系。利用翻折法解题的关键是选择好被翻折图形和翻折
无线传感器网络(WSN)中存在因节点能量耗尽和移动节点撒播不均而出现的覆盖洞问题,覆盖洞的出现会降低网络的覆盖率和连通性,严重影响网络性能。为解决该问题,构造一种既有静态
西北人口流动的主要流向是由乡村到城市、由脑山地区向川水城镇、由西部地区向东部地区的流动。据不完全统计,全国农村目前有留守儿童2000多万,并且每年呈递增的趋势。而西部农
俗语说“教无定法,贵在得法”。在课堂教学活动中,教学效果的高低取决于教师驾驭课堂的能力,这也就是说不仅要有得当的教学方法,还要掌握它科学的艺术性。因而课堂教学即是一门科
市场经济的大潮滚滚而至。人们在各种欲望的追逐中不断陷于焦虑、迷惘甚至空虚当中。总感觉现实生活中缺少点精气神的东西。一些电视剧纷纷暴力化、传奇化、性爱化,很多观众因
卡通读物是当今未成年人喜闻乐见的图书,他们在思想、生活及行为方式上或多或少地受着卡通读物的影响。对于未成年人而言,卡通读物在审美情趣,、道德观念、意识形态、思维方式等