Cache数据库简单模糊查询的研究与分析
2017-04-05李成亮姚伟
李成亮 姚伟
摘要:在医院信息系统中,后关系型数据库Cache以高效的性能而得到广泛应用。详细介绍了对医院药品字典的医嘱项别名进行模糊查询的四种方法。采用一种计算查询时间的方法对其执行效率进行了测试,并且结合每种方法的特性,分析了四种方法的优缺点,给出了每种查询方法的应用场合,为cache数据库模糊查询提供了参考。
关键词:Cache;后關系型数据库;模糊查询;方法研究
中图分类号:TP311
文献标志码:A
文章编号:1006-8228(2017)01-51-04
0引言
医院信息化的发展提高了医院的工作效率、强化了医院的管理水平、简化了医疗的流程步骤,直接反映了医院医疗水平的现代化程度。InterSystems公司研发的“后关系型”数据库(Post-Relational Database)Cach6将对象数据库访问、高性能的sQL访问、强大的多维数据访问这三种方法融为一体,具有比关系型数据库更高的性能、更大的扩展性、更快的编程能力。
为了提高医生查询药品字典的效率,通常会在医嘱项上建立“拼音码”形式的别名以方便模糊检索。本文详细介绍了对医嘱项别名进行模糊查询的四种方法,通过测试,对这四种方法的执行效率进行分析,并且结合每种方法的特征,总结了四种方法的优缺点,给出了每种查询方法的应用场合,以期为Cache数据库模糊查询提供参考。
1.简单模糊查询的方法
1.1SQL语句使用通配符
格式为:SELECT<列>FROM<表>WHERE<字段名>LIKE<条件>。
sQL语句是—种双重性语言,包括交互式SQL和嵌入式sQL。本文分别采用了这两种形式进行模糊查询。
1.2字符串比较运算符的使用
格式为:<多维数据>[<入参>。
含义是:若<多维数据>包含<入参>,则返回为True;否则为Falseo
Cache数据库以多维数据结构形式存储,开发者可以采用对象、表格、或者多维数组进行建模。本文采用多维数组的方式,采用字符串比较运算符“[”,将多维数组中的数据与入参比较,若包含入参,即实现模糊查询。
例如:医嘱名称为胸腰椎后路创伤钉棒系统(四钉二棒一横联)一横联(天津正天),医嘱别名为XYZHLCSDBXT,入参为XY。
因“XYZHLCSDBXT”[“XY”,故可以通过XY模 糊检索出该医嘱。
2.药品字典医嘱项别名的简单模糊查询
2.1药品字典的形式
药品字典的表名为:PHYZPmCheGL.User.Fuzzy-Query,各字段名分别为:“FQRowlD”、“DocAd”、“Do-cAdAlias”、“UnitPrice”、“Unit”、“DocAdCode”。在“FQRowlD”字段建立主索引、拼音码形式的医嘱项别名“DocAdAlias”字段建立索引。
2.2简单模糊查询的实现方法
在Cach6数据库中对医嘱项别名进行“拼音码”的模糊查询,具体的实现方法如表l所示。
本文分别对药品字典10000条、150000条数据进行模糊查询测试,随机抽取两位、三位拼音码在类方法TestQuery()中进行测试,其结果如表2、表3所示(单位:毫秒)。
从表2中可以得出:在数据量较小的情形下,四种方法执行所用时间相差不大。
从表3中可以得出:方法三执行效率最高,方法四执行效率最低。方法一执行效率低于方法二。
结合各种方法的形式特征,归纳出不同模糊查询方法的优缺点,如表4所示。
2.4模糊查询方法的应用场合分析
在数据量大、需要进行业务逻辑运算、实时事务处理过程情形下,适宜采用系统类%Query提供的方法,巧妙利用Cach6 ObjectScript语言中的字符串比较运算符“[”快速地进行模糊查询,即方法三。
在仅需进行模糊查询时,可以采用Cach6类中预先定义并封装好的sQL语句,即方法二。
在一般情形下,可以选用游标或者面向对象的模糊查询方法,即方法一或方法四。3结论
药品字典的医嘱项名称通常比较长,并且为了记忆方便,一个医嘱项名称一般会维护多个医嘱项别名。为提高医生检索的快速性、准确性,本文详细介绍了四种模糊查询的方法,并对每种方法的执行效率进行了测试分析,可以得出以下结论。
(1)方法一、二、四本质都是采用sQL语句,方法三根据Cach6数据库数据存储的特性,采用字符串比较运算符“[”进行模糊查询,其效率优于使用SQL语句。
(2)在复杂情形下,可以结合这四种查询方法的优势,灵活地加以混合运用。
在实际使用过程中,采用方法三进行模糊查询,因其执行效率较高而普遍被医生所认可,可推广直接使用多维数组进行业务逻辑处理的方法。