admin 管理员组

文章数量: 1184232


2024年5月1日发(作者:thinkphp5怎么下载)

维普资讯

第27卷 

计算机应用 

Vol-27 

2007年12月 

Computer Applications 

Dec.2o07 

文章编号:1001—9081(2007)s2—0263—02 

基于B/S结构的HIS数据库优化分析 

贺志强,唐宁九 

(四川大学计算机学院,成都610065) 

(hejie4228688@163.com) 

摘 要:根据目前医院信息系统(HIS)数据库面临的问题,介绍基于B/S结构的HIS数据库优化 

方法,着重介绍索引在数据库中的应用以及设计SQL语句时的注意事项,并结合具体情况测试了两 

种分页算法,得出了海量数据下的最佳算法。 

关键词:数据库优化;索引;分页算法 

中图分类号:TlY311.13 文献标志码:A 

0 引言 

具体情况下是否建立索引的情况如表1所示。 

表1建立索引的情况说明 

目前,数据库技术已经成为医院的重要资源,借助它可以 

科学地保存和管理医院大量复杂的数据信息。但由于缺乏医 

院信息规划方面的经验,使得系统开发人员只注重软件功能 

完整性方面的测试和完善,而忽略了越来越多的海量数据对 

系统性能方面的压力。所以,很多HIS在经过一段时间使用 

后,系统响应速度越来越慢,用户时常要忍受长时间来等待, 

并且,死锁和宕机现象时有发生。因此,在数据库建模,设计 

2 应用程序性能优化 

等环节上要不断优化数据库,以期得到更好的效率。 

I-I/S系统一般都是海量数据,SQL语句的优劣在速度上差 

数据库的优化可以通过对网络、硬件、操作系统、数据库参 

别可达上百倍乃至更多,所以要编写出高质量的SQL语句,提 

数和应用程序的优化来进行。据统计,对网络、硬件、操作系统 

高系统的可用性。以下是优化SQL语句的几个注意事项: 

和数据库参数进行优化只能提升4JD%左右数据库系统性能, 

1)避免使用不兼容的数据类型。例如float和int,char和 

而应用程序的优化则能对数据库系统性能提升60%以上。 

val"char,binary和varbinary是不兼容的,数据类型的不兼容无 

1 数据库性能优化 

法使用预先定义好的索引。 

2)尽量避免在WHERE条件里使用非聚合表达式。非聚 

数据库设计时应用程序设计的基础,其性能直接影响应 

合表达式很难利用到索引,反而有时会导致查询速度大大下 

用程序的性能。数据库中的表是最基本的,实际中一般按照 

降。 

第三范式的标准进行规范化。但是,有时将一个表拆分为多 

3)尽量避免在WHERE子句中对字段进行函数或表达式 

个表,查询时需要多表连接,这就降低了查询进度。所以,有 

操作。因为若WHERE子句中存在一个函数或表达式,优化 

时要通过反规范化分割表,保留冗余列,增加派生列等来分别 

器就不能使用分布统计信息。 

提高每个表的查询速度。 

4)避免使用LE兀'JOIN和NULL。LE兀'JOIN消耗很多 

建立索引是加快查询速度最有效的手段。在HIS数据库 

资源,因为它包含与NULL(不存在)数据匹配的数据。因此 

设计中根据需要针对基本表上最有可能查询的属性建立索 

在构造查询语句时尽量避免使用LEFT JOIN和NULL。 

引。系统在存取数据时会自动选择合适的索引作为存取路 

5)尽量避免在索引过的字符数据中,使用非打头字母搜 

径,以加快查询速度。一个基本表可以针对不同的属性建立 

索。 

多个索引。但注意:索引并不是越多越好,应正确规范建立适 

6)避免对大型表进行全表扫描。 

合实际情况的索引。 

7)尽量避免使用“SELECT…,按照实际,需要什么才提 

建立索引应注意以下几点: 

取什么。 

1)主键时常作为WHERE子句的条件,应在表的主键列 

8)利用临时数据库。在查询多表、有多个连接、查询复 

上建立索引,尤其当经常用它作为连接时; 

杂和数据要过滤时,可以建临时表(索引)以减少I/0。但缺 

2)在查询经常用到的所有列上创建非聚集索引; 

点是增加了空间开销。 

3)在经常进行连接,但没有指定为外键的列上建立索 

引,而不经常连接的字段则由优化器自动生成索引; 

3分页算法的实现 

4)在频繁进行范围查询、排序或分组的列上建立索引; 

分页算法单独在B/S结构中它占有很重要的地位,它的 

5)比较窄的索引具有比较高的效率。 好坏直接决定着使用者对整个系统的评价。而且基于B/S 

收稿日期:2007—04—09;修回日期:2007—06—07。 

作者简介:贺志强(1983一),男,四川安县人,硕士研究生,主要研究方向:软件工程、数据库; 唐宁九(1960一),男,四川成都人,教授,博 

士,主要研究方向:软件工程、计算机网络。 

维普资讯

计算机应用 

结构的HIS,分页浏览功能必不可少。可以利用ADO自带的 

分页功能来实现分页。但这种分页方法仅适用于较小数据量 

的情形,因为游标本身有缺点:游标是存放在内存中的,很耗 

费内存。而对于HIS这种大量的数据库系统,ADO的分页速 

(SELECT TOP 

2007血 

((PAGECODE一1)・PAGESIZE)ID FROM TABLE 

ORDER BY ID)asn 

ORDER BY ID 

度和效率是让人无法忍受的。 

如果考虑用DataGrid来分页,或者是用DbDataAdapter. 

3.3 两种方法的对比测试 

在HIS中,我们选择了以ID为主键,但并不是聚集索引 

来为排序列,取ID,PATIENT—NAME,INSPECTION—TIME, 

DOC,RESULT字段,测试上面两种分页方案的执行速度,具 

体见表2。 

从表2可以看出,第一种方案在10000页以上速度就降 

Fill填充DataSet来分页,虽然也是可以实现的,但是它们的 

效率都不高,下面两种另外的算法并对它们做了测试。 

3.1基于N-M的分页算法 

根据从数据表中取出第n条到第m条的记录的方法,该 

下来了,第二种方案没有大的降势,空间还很足。以上测试数 

方法为: 

据来自华西医院。测试服务器为联想T168。配置为CPU频 

SELECTTOPm—n+1・ 

率(MHz):1860,内存:1 GB,硬盘:250 GB。 

FR0M TABLE 

WHERE(ID NOT EXISTS 

表2测试结果 ms 

(SELECT TOPn一1 ID FROM TABLE)) 

ID为表的关键字 

应用到HIS系统中,可以改造为: 

SELECT TOP PAGESIZE} 

FROM TABLE 

WHERE(ID NOT EXISTS 

(SELECT TOP 

PAGESIZE・PAGECOUNT ID FROM TABLE 

ORDER BY ID)) 

0RDER BY ID 

这个存储过程有一个很大的缺点,就是它含有NOT 

4 结语 

EXISTS字样,但即使这样,用TOP结合NOT EXISTS的这个 

本文结合项目的实例,对基于B/S的HIS数据库做了系 

方法还是比用游标要来得快一些。 统分析,提出了一些经验总结和注意事项。HIS数据库优化 

使用SQL Server中的TOP关键字却是一个非常明智的 

是一个系统工程,涉及很多方面,设计者要综合考虑,认真分 

选择。因为分页优化的最终目的就是避免产生过大的记录 

析,根据实际情况来最大限度的保证系统的稳定性和高效性。 

集,通过TOP即可实现对数据量的控制。 

参考文献: 

3.2 MAX分页算法 

[1]萨师煊,王珊.数据库系统概论[M].3版.北京:高等教育出版 

在分页算法中,TOP可以提高查询速度,而NOT EXISTS 

社,2000. 

会减慢查询速度,经过测试,NOT EXISTS和NOT IN的效率 

[2] 钱文波,谢金宝.SQL Server数据库性能优化技术[J].微型机与 

都相差不大。所以要提高我们整个分页算法的速度,就要彻 

应用,1999,18(3):7—9,22. 

底改造NOT EXISTS,用其他方法来替代它。 

【3]HOFFER J A,PRESCOTr M B,McFADDEN F R.现代数据库管 

我们可以用max(字段)来提取某个字段中的最大值,所 

理(M].6版.北京:机械工业出版社,2004:221—222. 

以如果这个字段不重复,那么就可以利用这些不重复的字段 

f4]赵颖,沈金龙.基于SQL Server的应用程序优化f J].电子工程 

的max作为分页的参照物。在这里,可以用操作符“>”号来 

师,20oo,26(5):7—9. 

完成这个工作。于是便得到下面的分页方案: 

[5]CONNOLLY TM,BEGG C E.数据库设计教程[M].2版.北京: 

SELECT TOP PAGESIZE 

机械工业出版社。2005:110—119. 

FR0M TABLE 

[6] KRIEGEL A,TRUKHNOV B M.SQL宝典[M].北京:电子工业出 

WHERE ID>(SELECTmax(ID)FROM 

版社,2003:187—242. 

(上接第262页) 

参考文献: 

hing[C]//Proceedings of the 31 st International Conference on Very 

[1] AL—KHALIFA S,JAGADISH H V,KOUDAS N,et a1.Struetural 

Large Data Bases.New York:ACM Press.2005:193—204. 

joins:a primitive for efficient XML query pattem matching【C]// 

[5]TATARINOVI,VIGLAS S D,BEYER K,et a1.Storing andquer- 

Proceedings of the 1 8th International C0fIference oll Data Engineer- 

ying ordered XML using a erlational database system[C]//Proceed- 

ings of the 21 st ACM Symposium on Principles of Datbaase Systems 

ing.Los Alamitos:IEEE Computer Society,2002:141—152. 

(PODS).New York:ACM Pre8s,2002:204—215. 

[2】 万常选,刘云生,徐升华,等.基于区间编码的XML索引结构的 

[6]HARDER T,HAUSTEIN M,MATHIS C,et a1.Node lbaeling 

有效结构连接[J].计算机学报,2005,28(1):113—127. 

schemes for dynamic XML documents reconsidered f J].Data& 

【3) 罗道锋,孟小峰,蒋瑜.XML数据扩展前序编码的更新方法[J], 

Knowledge Engineering,2007,60(1):126—149. 

软件学报,2005,16(5):810—818. 

【7] Centrum voor Wiskunde en Informatiea.XMark—An XML bench— 

[4]LU J H,LING T W,CHAN C Y,et a1.From region encoding to 

mark projeet[EB/OL].(2003一O6—28)[2007—5—15】.http:// 

extended Dewey:on efficient processing of XML twig pattern mate— 

monetdb.cw1.n1/xml/. 


本文标签: 数据库 优化 查询 进行 使用