数据库的数据检索方法和装置的制作方法

文档序号:6470994阅读:221来源:国知局
专利名称:数据库的数据检索方法和装置的制作方法
技术领域
本发明涉及计算机技术领域,更具体地说涉及一种数据库的数据检索方 法和装置。
背景技术
在数据库中进行数据搜索时,主要是对数据库进行物理读、逻辑读和预 读几个操作,其中,物理读指的是从磁盘直接读取,逻辑读指的是从数据緩 存中进行读取,预读指的是处理查询之前预先从磁盘进行读取的操作。
现有的oracle数据库中,数据检索的执行过程如图1所示,包括以下步

步骤Sll、语法分析。
分析语句的语法是否符合规范,衡量语句中各表达式的含义是否准确。 步骤S12、语义分析。
检测语句中涉及的所有数据库对象是否存在,且用户有相应的权限。 步骤S13、视图转换。
将涉及^L图的查询语句转换为相应的对基表查询语句。 步骤S14、表达式转换。
将复杂的查询表达式转换为较为简单的等效连接表达式。
步骤S15、选择优化器。
步骤S16、选择连接方式和连接顺序。
步骤S17、在全表范围内逐字段进行检索,并返回搜索结果。 可以看出,上述方法采用的搜索方式是全表检索,这种方式一般需要较 多的逻辑读次数和预读次数,需要花费较长的时间,从而延长了检索时间。

发明内容
4有鉴于此,本发明的目的在于提供一种数据库的数据检索方法和装置, 以解决现有技术由于需要全表检索而导致检索时间过长的问题。 本发明实施例是这样实现的
一种数据库中数据记录的^r索方法,所述数据库中各条数据记录中的预 设关键字段之间符合预定逻辑顺序,且所述各条数据记录的物理顺序与所述 预定逻辑顺序一致,所述方法包括
将包含所有数据记录的预设关键字段的列确定为索引文件;
依据输入的索引键值在该索引文件中进行检索,在当前关键字段在所述 预定逻辑顺序中的逻辑位置落后于所述索引键值时,停止检索并返回关键字 段符合所述索引键值的数据记录。
优选的,上述方法中,预定关键字段设置有辅助信息,所述方法还包

在返回的数据记录中,根据所述辅助信息进行进一步检索,以确定符合 该辅助信息的数据记录。
优选的,上述方法中,所述预设关键字段为用户名称,或者用户名称和 用户账号的组合,在所述数据库中具有唯一性。
优选的,上述方法中,所述预定逻辑顺序为关键字段首字母在字母表中 的位置顺序。
优选的,上述方法中,所述索引文件中头部设置有参考信息,该参考信 息用于指示索引文件中各关键字段相同首字母的首次出现位置,所述依据输 入的索引键值在该索引文件中进行检索具体为
确定该索引键值的首字母,查询所述参考信息,确定与该索引键值具有 相同首字母的用户名称的位置,并以该用户名称作为检索起始地址进行检 索。
本发明实施例同时还提供了一种数据库的数据检索装置,所述数据库中 各条数据记录中的预设关键字段之间符合预定逻辑顺序,且所述各条数据记 录的物理顺序与所述预定逻辑顺序一致,所述装置包括
确定单元,用于将包含所有数据记录的预设关键字段的列确定为索引文
件;
5第一;f全索单元,用于依据输入的索引键值在该索引文件中进行^r索,在
当前关键字段在所述预定逻辑顺序中的逻辑位置落后于所述索引键值时,停 止检索并返回关键字段符合所述索引键值的数据记录。
优选的,上述装置中,预定关键字段设置有辅助信息,所述装置还包

第二;^索单元,用于在返回的数据记录中,根据所述辅助信息进行进一 步检索,以确定符合该辅助信息的数据记录。
优选的,上述装置中,所述预设关键字段为用户名称,或者用户名称和 用户账号的组合,在所述数据库中具有唯一性。
优选的,上述装置中,所述预定逻辑顺序为关键字段首字母在字母表中 的位置顺序。
优选的,上述装置中,所述索引文件中头部设置有参考信息,该参考信 息用于指示索引文件中各关键字段相同首字母的首次出现位置,所述第 一检
索单元包括
第一处理单元,用于确定该索引4定值的首字母;
第二处理单元,用于查询所述参考信息,确定与该索引键值具有相同首 字母的用户名称的位置,并以该用户名称作为检索起始地址进行检索。
通过上述技术方案可知,与现有技术相比,本发明实施例中的数据记录 是按照其中预定关键字段的逻辑顺序存储的,其物理顺序与逻辑顺序是一致 的,于是,本发明实施例在进行数据检索时,只需对一定范围内的数据进行 检索即可,位无需进行全表检索,从而节省了检索时间。另外,本发明实施 例在上述检索结果的基础上,利用辅助信息进行进一步检索,而无需对上述 检索结果进行人为的比较分析,从而进一步加快检索速度,并方便使用者使 用。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面 描述中的附图仅仅是本发明的一些实施例,对于本领域鲁通技术人员来讲, 在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为现有技术中进行数据4企索的流程图; 图2为本发明实施例公开了一种数据库的数据检索方法的流程图; 图3为本发明实施例公开了一种数据库的数据检索装置的结构示意图; 图4为本发明实施例公开了另一种数据库的数据;险索装置的结构示意
图5为图3或图4所示的数据检索装置的第一检索单元的结构示意图。
具体实施例方式
为了使本领域技术人员能够清楚理解本发明的技术方案,下面将结合本 发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描 述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施 例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前 提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了 一种数据库的数据检索方法,该方法可以减少物理 读次数和逻辑读次数,从而提高检索速度,所述数据库中包含若干数据表, 各数据表中包含若干数据记录,每条数据记录包括若干关键字段,所述各条 数据记录中的预设关键字段之间符合预定逻辑顺序,且所述各条数据记录的 物理顺序与所述预定逻辑顺序一致。本实施例公开的数据检索方法的基本过 程是根据输入的索引键值,查找具有与其相应的关键字段的数据记录(目 标数据记录),并返回,当查找的关键字段在预定逻辑顺序中的位置落后于 所述索引《建在所述预定逻辑顺序中的位置时,结束查找操作,并将查找到的 目标数据记录返回,如果没有目标数据记录则返回查找失败的信息。其具体 流程如图2所示,在将包含所有数据记录的预设关键字段的列确定为索引文 件之后,包括以下步骤
步骤S201、接收用户输入的索引键值。
步骤S202、以该索引文件中的首个关键字段为起始点,在该索引文件中 逐字段与所述索引键值比较。
依次将索引文件中的关键字段作为当前关键字段,与所述索引键值进行 比较,步骤S203、当进行比较的关键字段在所述预定逻辑顺序中的位置落后于
所述索引键值在所述预定逻辑顺序中的位置时,结束4企索。
步骤S204、返回检索结果,结束流程。
所述检索结果可以为空,也可以是具有符合所述索引键值的关键字段的 数据记录。
一般来说,所述预定关键字段优选会经常使用的字段,所述预定逻辑顺 序可以根据所述关键字段类型而定,下面通过一个具体实例进行说明
假设一个远程培训系统的数据库中,设置有用于存储培训人员信息的数 据表(Userinfo),如表1所示,该数据表中包含若干条数据记录,每条数 据记录包括以下几个关键字段
用户账号(Userid )、用户名称(Username )、参加学习次数 (Useraccount)、 参力口学习时间(Userduty)、 电i舌(Usertelephone)、 用 户电子邮箱(Useremail)、用户所属分组(Usergroupname)、用户所属/> 司名称(Usercompanyname )。
表1
用户ID用户名学习次数学习时间电话E-mail所属 组所属 公司
alan阿伦315 (h)131******611alan@*AlSL
chenx陈想210 (h)133承求+承承承521B2
dengx邓霞315 (h)134******254dengx@*Al

wangy王语420 (h)139******422wangy@*A2
zhaobin赵斌15 (h)zhaob@*CITBL
8其中
Usemame列作为索引文件(在其他实施例中,可以将Username列和 Username列一并作为索引文件),该表1中的各个数据记录是按照某逻辑顺 序(各培训人员的姓名拼音的首字母在字母表中的先后顺序)进行排列的, 于是,在检索某培训人员的记录时,依据该培训人员的名称在Usemame列 数据中检索。例如在表l中搜索名称为"赵斌"的培训人员时,釆用以下
查询"i吾句如下
Select username, useraccount, userduty, usergroupname, usertelephone, useremail from userinfo where Upper(username) = Upper('赵斌') 可以看出,其中索引键值为"赵斌",假设表1中有20000条数据记 录,总共具有1600000数据块,索引在占据20000数据块,具有"赵斌"字 段的数据记录在表1中具有唯一性,其在表中的位置为15000,则按照现有 技术全表扫描的话,总共需扫描1600000数据块,而如果按照本发明实施例 公开的方法,则只需在索引文件中进行扫描,大大减少了扫描时间。依据实 验,现有技术搜索的时间约为13229毫秒,而利用本发明实施例,则只需 1135毫秒。并且,数据库的数据记录数量越多,本发明实施例的优点就越明 显,假设数据库中数据记录为1000万条,查询三个月内新增的用户时,现 有技术花费的时间为53763毫秒(约54秒),而本发明实施例则只需花费 2423毫秒(约2秒)。另外,在返回的数据记录数量较多时,如果采用现有 技术,由于其数据库中数据记录的物理顺序与逻辑顺序不一致,这意味着符 合索引键值的关键字段的数据记录在数据库中的位置处于分散状态,于是在 返回搜索结果时需要将各符合条件的数据记录进行排序, 一定程度上增加了
搜索时间;而本发明实施例中,由于数据记录的物理顺序与其中某关键字段 的逻辑顺序一致,意味着将具有相同逻辑特征的数据记录处于集中状态,这 使得在搜索结果数量较多的情况下,将其返回给用户时,不需要进行排序, 从而缩短了搜索时间。
需要说明的是,由于数据记录是按照usemame字段的首字母在字母表中 的顺序进行存储的,则在进行数据搜索过程中,如果搜索到关键字段的首字 母在字母表中落后于索引键值的首字母,则停止搜索。例如,当需要搜索培 训人员"陈颖,,的数据记录时,索引键值设置为"陈颖",当搜索到关键字
9段的首字母为D(如"邓霞")时,停止搜索,并可确定该数据表中没有相 应的数据记录。这点与现有技术存在显著不同,现有技术需要进行全表搜索 后,才能确定是否存在相应的数据记录。
另外,还需要说明的是,当符合索引键值的关键字较多时,意味着返回 的数据记录也较多,这时,如果要在其中确定某一个数据记录(目标数据记 录)时,需要人为地对数据记录进行逐条分析,最终确定目标数据记录。这 一定程度上给使用者带来了不便,为了解决此问题,本发明实施例公开了另 一种数据库的数据检索方法,该方法在上述方法的基础上,为作为索引的列
数据中的各关键字段设置辅助信息(下文统称为辅助关键字),从而在返回 的数据记录数量较多时,通过所述辅助关键字确定最终目标数据记录,为操 作者提供方便。本实施例适用于无法确定具体名称的模糊搜索,例如,如果 需要获取一位姓张的培训人员的数据记录,当按照图2所示流程进行搜索
时,有可能返回的数据记录的数量会很多,而如果usemame字段设置了辅助 信息,则可进一步根据该辅助信息缩小搜索范围,例如当需要查找一位姓 "张,,且职位是"处长"的培训人员时,采用4叟索语句Select usemame, useraccount, userduty, usergroupname, usertelephone,useremail from userinfo where Upper(username) like Upper( '%张%' ) and Upper(information) like Upper('%处长%')。即通过对姓名的查找,对所有姓张的培训人员先查找出 来,然后再根据辅助关键字("处长")在查找结果中进行查找,最终确定 目标lt据记录。
此外,为了进一步提高搜索速度,针对以username列数据作为索引文件 的方式,在数据库预先进行数据存储时,利用该用户名称的首字母进行标 注,在存储完毕后,记录相同首字母的首次出现位置,并删除上述标注,将 记录下来的字母及出现位置(该位置可以由与数据表首地址的偏移量来表 示,该偏移量可由数据行来表示)确定为参考信息并设置于索引文件头部。 于是,在接收到操作者输入的索引键值时,确定该索引键值的首字母,查询 所述参考信息,确定与该索引4定值具有相同首字母的用户名称的位置,并以 该该用户名称作为检索起始地址进行检索,由此,无需从索引文件的首地址 依次检索,节省了检索时间;另外,当所述参考信息中不存在与索引键值首
10字母相同的字母时,则可确定索引文件中也不存在符合所述索引键值的用户 名称,同样节省检索时间。
本发明实施例同时还提供了 一种数据库的数据检索装置,所述数据库中 各条数据记录中的预设关键字段之间符合预定逻辑顺序,且所述各条数据记 录的物理顺序与所述预定逻辑顺序一致。所述数据检索装置的结构如图3所
示,包括确定单元31和第一检索单元32,其中
确定单元31,用于将包含所有数据记录的预设关键字段的列确定为索引 文件。
第 一检索单元32,用于依据输入的索引键值在该索引文件中进行检索, 在当前关键字段在所述预定逻辑顺序中的逻辑位置落后于所述索引键值时, 停止检索并返回关键字段符合所述索引键值的数据记录。
一般来说,所述预定关键字段优选会经常使用的字段,所述预定逻辑顺 序可以根据所述关键字段类型而定。例如该预定关键字段为用户名称,则 所述预定逻辑顺序可以是姓名拼音的首字母在字母表中的先后顺序。
本发明实施例同时提供的另 一种数据检索装置中,所述预定关键字段设 置有辅助信息,该装置的结构如图4所示,包括确定单元41、第一^r索单元 42和第二4全索单元43;其中
确定单元41、第一检索单元42的功能,与确定单元31和第一检索单元 32的功能相类似,在此不再赘述。
第二检索单元43,用于在返回的数据记录中,根据所述辅助信息进行进 一步检索,以确定符合该辅助信息的数据记录。
例如当需要查找一位姓"张"且职位是"处长"的培训人员时,先通 过对姓名的查找,对所有姓张的培训人员先查找出来,然后再根据辅助关键 字("处长")在查找结果中进行查找,最终确定目标数据记录。
所述索引文件中头部设置有参考信息,该参考信息用于指示索引文件中 各关键字段相同首字母的首次出现位置,针对这种情况,图5示出了第一检 索单元32 (42)的一种可能的结构,包括第一处理单元51和第二处理单 元52,其中
第一处理单元51,用于确定该索引4定值的首字母。第二处理单元52,用于查询所述参考信息,确定与该索引4定值具有相同 首字母的用户名称的位置,并以该用户名称作为检索起始地址进行检索。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明 的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见 即可。对于装置而言,由于其与上述方法基本相似,所以描述得比较简单, 相关之处参见前文方法部分说明即可。
本领域技术人员可以理解,结合本文中所公开的实施例描述的各示例的 单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为 了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地 描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取 决于技术方案的特定应用和设计约束条件。专业^t术人员可以对每个特定的 应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发 明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、 处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存
储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可 编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知 的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用 本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易 见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况 下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实 施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
权利要求
1、一种数据库中数据记录的检索方法,其特征在于,所述数据库中各条数据记录中的预设关键字段之间符合预定逻辑顺序,且所述各条数据记录的物理顺序与所述预定逻辑顺序一致,所述方法包括将包含所有数据记录的预设关键字段的列确定为索引文件;依据输入的索引键值在该索引文件中进行检索,在当前关键字段在所述预定逻辑顺序中的逻辑位置落后于所述索引键值时,停止检索并返回关键字段符合所述索引键值的数据记录。
2、 如权利要求1所述的方法,其特征在于,预定关键字段设置有辅助 信息,所述方法还包括在返回的数据记录中,根据所述辅助信息进行进一步检索,以确定符合 该辅助信息的lt据记录。
3、 如权利要求l或2所述的方法,其特征在于,所述预设关键字段为用 户名称,或者用户名称和用户账号的组合,在所述数据库中具有唯一性。
4、 如权利要求3所述的方法,其特征在于,所述预定逻辑顺序为关键 字段首字母在字母表中的位置顺序。
5、 如权利要求l或2所述的方法,其特征在于,所述索引文件中头部设 置有参考信息,该参考信息用于指示索引文件中各关键字段相同首字母的首 次出现位置,所述依据输入的索51键值在该索引文件中进行4全索具体为确定该索引键值的首字母,查询所述参考信息,确定与该索引键值具有 相同首字母的用户名称的位置,并以该用户名称作为检索起始地址进行检 索。
6、 一种数据库的数据检索装置,其特征在于,所述数据库中各条数据 记录中的预设关键字段之间符合预定逻辑顺序,且所述各条数据记录的物理 顺序与所述预定逻辑顺序一致,所述装置包括确定单元,用于将包含所有数据记录的预设关键字段的列确定为索引文件;第一检索单元,用于依据输入的索引键值在该索引文件中进行检索,在 当前关键字段在所述预定逻辑顺序中的逻辑位置落后于所述索引键值时,停止^r索并返回关键字段符合所述索引键值的数据记录。
7、 如权利要求6所述的装置,其特征在于,预定关键字段设置有辅助 信息,所述装置还包括第二检索单元,用于在返回的数据记录中,根据所述辅助信息进行进一 步检索,以确定符合该辅助信息的数据记录。
8、 如权利要求6或7所述的装置,其特征在于,所述预设关键字段为用 户名称,或者用户名称和用户账号的组合,在所述数据库中具有唯一性。
9、 如权利要求8所述的装置,其特征在于,所述预定逻辑顺序为关键 字段首字母在字母表中的位置顺序。
10、 如权利要求6或7所述的装置,其特征在于,所述索引文件中头部 设置有参考信息,该参考信息用于指示索引文件中各关键字段相同首字母的 首次出现位置,所述第一检索单元包括第一处理单元,用于确定该索引4建值的首字母;第二处理单元,用于查询所述参考信息,确定与该索引键值具有相同首 字母的用户名称的位置,并以该用户名称作为检索起始地址进行检索。
全文摘要
本发明实施例公开了一种数据库中数据记录的检索方法,所述数据库中各条数据记录中的预设关键字段之间符合预定逻辑顺序,且所述各条数据记录的物理顺序与所述预定逻辑顺序一致,所述方法包括将包含所有数据记录的预设关键字段的列确定为索引文件;依据输入的索引键值在该索引文件中进行检索,在当前关键字段在所述预定逻辑顺序中的逻辑位置落后于所述索引键值时,停止检索并返回关键字段符合所述索引键值的数据记录。本发明实施例同时还公开了实现上述方法的装置。本发明实施例能够加快检索速度。
文档编号G06F17/30GK101493824SQ20081022471
公开日2009年7月29日 申请日期2008年12月9日 优先权日2008年12月9日
发明者浩 张, 朱玉仓, 朴熙俊 申请人:北京中电飞华通信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1