用于检索的方法和装置的制造方法

文档序号:8258861阅读:572来源:国知局
用于检索的方法和装置的制造方法
【技术领域】
[0001] 本发明实施例涉及数据库检索领域,并且更具体地,涉及一种用于检索的方法和 装置。
【背景技术】
[0002] 在数据库的检索过程中,通常采用索引来提高检索速度,例如,最常用的索引为B+ 树索引。在索引字段上进行查询的时候,查询速度往往能够得到很大的提升。但是,在索引 字段上包括函数的情况下,索引很难发挥作用,基本上只能采用顺序扫描而无法使用索引 扫描。在实际的业务场景中,在索引字段上往往都包括函数,例如,判断两个日期在5天之 内(ABS(tl-t2)〈5),或者判断是不是2014年的时间(Year (tl) =2014)等,在这些情况下, 索引往往无法发挥其作用,影响了检索速度。
[0003]目前,为了解决这个问题,提出了函数索引技术,即针对检索的函数建立对应的 函数索引,如针对ename字段上建substr的索引,create index emp_ename_substr on eemp(substr(ename, 1,2))。但是,在数据更新的情况下,由于索引字段本身的值和函数计 算之后的值并没有直接的对应关系,函数索引的维护代价很高,导致实际使用的场合很少。

【发明内容】

[0004] 本发明实施例提供一种用于检索的方法和装置,能够有效提尚检索的效率。
[0005] 第一方面提供了一种用于检索的方法,该方法包括:
[0006] 获取检索表达式,该检索表达式用于在数据库中进行检索;
[0007] 根据该检索表达式的变量及操作符,从预设的表达式集中选取该检索表达式的匹 配表达式;
[0008] 从该检索表达式的变量中选取目标变量,该目标变量在该数据库中建有索引;
[0009] 根据该匹配表达式以及该目标变量,将该检索表达式转换成等价的Sargable表 达式;
[0010] 根据该Sargable表达式,通过该索引,在该数据库中进行检索。
[0011] 结合第一方面,在第一方面的第一种可能的实现方式中,根据该匹配表达式以及 该目标变量,将该检索表达式转换成等价的Sargable表达式,包括:
[0012] 根据该匹配表达式以及该目标变量,通过预设的映射表,确定对应的Sargable表 达式,其中,该映射表中记录有该表达式集中的各表达式、该各表达式中的建立有索引的变 量以及Sargable表达式的映射关系。
[0013] 结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的 实现方式中,从该检索表达式的变量中选取目标变量,包括:
[0014] 根据该数据库的索引信息,从该检索表达式的变量中选取目标变量,其中,该数据 库的索引信息中记录有在该数据库中建立有索引的变量。
[0015] 结合第一方面或第一方面的第一种或第二种可能的实现方式,在第一方面的第三 种可能的实现方式中,根据该匹配表达式以及该目标变量,将该检索表达式转换成等价的Sargable表达式,包括:
[0016] 在该检索表达式为函数表达式或操作表达式的情况下,根据该匹配表达式以及该 目标变量,将该检索表达式转换成等价的Sargable表达式;
[0017] 该方法还包括:
[0018] 在该检索表达式为条件表达式的情况下,根据该检索表达式,在该数据库中进行 检索。
[0019] 结合第一方面或第一方面的第一种至第三种可能的实现方式中的人一种可能的 实现方式,在第一方面的第四种可能的实现方式中,该检索表达式为连接场景下的或者查 询场景下的检索表达式。
[0020] 第二方面,提供一种用于检索的装置,该装置包括:
[0021] 获取模块,用于获取检索表达式,该检索表达式用于在数据库中进行检索;
[0022] 第一选取模块,用于根据该获取模块获取的该检索表达式的变量及操作符,从预 设的表达式集中选取该检索表达式的匹配表达式;
[0023] 第二选取模块,用于从该获取模块获取的该检索表达式的变量中选取目标变量, 该目标变量在该数据库中建有索引;
[0024] 转换模块,用于根据该第一选取模块选取的该匹配表达式以及该第二选取模块选 取的该目标变量,将该检索表达式转换成等价的Sargable表达式;
[0025] 第一检索模块,用于根据该转换模块转换所得的该Sargable表达式,通过该索 弓丨,在该数据库中进行检索。
[0026] 结合第一方面,在第一方面的第一种可能的实现方式中,该转换模块具体用于, 根据该匹配表达式以及该目标变量,通过预设的映射表,确定对应的Sargab 1 e表达式,其 中,该映射表中记录有该表达式集中的各表达式、该各表达式中的建立有索引的变量以及 Sargable表达式的映射关系。
[0027] 结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的 实现方式中,该第二选取模块具体用于,根据该数据库的索引信息,从该检索表达式的变量 中选取目标变量,其中,该数据库的索引信息中记录有在该数据库中建立有索引的变量。
[0028] 结合第一方面或第一方面的第一种或第二种可能的实现方式,在第一方面的第三 种可能的实现方式中,该转换模块具体用于,在该检索表达式为函数表达式或操作表达式 的情况下,根据该匹配表达式以及该目标变量,将该检索表达式转换成等价的Sargable表 达式;
[0029] 该装置还包括:
[0030] 第二检索模块,用于在该检索表达式为条件表达式的情况下,根据该检索表达式, 在该数据库中进行检索。
[0031] 结合第一方面或第一方面的第一种至第三种可能的实现方式中的人一种可能的 实现方式,在第一方面的第四种可能的实现方式中,该检索表达式为连接场景下的或者查 询场景下的检索表达式。
[0032] 基于上述技术方案,本发明实施例提供的用于检索的方法和装置,通过将检索表 达式转换为Sargable表达式,能够实现索引检索,能够有效提高检索的效率。
【附图说明】
[0033] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中 所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附 图获得其他的附图。
[0034] 图1示出了本发明实施例提供的用于检索的方法的示意性流程图。
[0035] 图2示出了本发明实施例提供的用于检索的方法的另一示意性流程图。
[0036] 图3示出了本发明实施例提供的用于检索的方法的再一示意性流程图。
[0037] 图4示出了本发明实施例提供的用于检索的方法的再一示意性流程图。
[0038] 图5示出了本发明实施例提供的用于检索的装置的示意性框图。
[0039] 图6示出了本发明实施例提供的用于检索的装置的另一示意性框图。
【具体实施方式】
[0040] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发 明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施 例,都属于本发明保护的范围。
[0041] 为了方便理解本发明实施例,首先在此介绍几个相关的概念:
[0042] 1)数据库管理系统
[0043] 数据库管理系统(Database Management System,简称为"DBMS")是一种操纵和管 理数据库的大型软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制, 以保证数据库的安全性和完整性。
[0044] 2)关系数据库
[0045] 关系数据库是建立在关系数据库模型基础上的数据库。
[0046] 关系型数据库的重要元素包括数据表和表连接,借助各种类型的表连接,可以将 平铺直叙的信息加以组装拼接。
[0047]3)索引
[0048] 索引是对记录集的多个字段进行排序的方法,在一张表中为一个字段创建一个索 弓丨,将创建另外一个数据结构,包含字段数值以及指向相关记录的指针,然后对这个索引结 构进行排序,允许在该数据上进行二分法排序。
[0049] 索引的目的是在可能的情况下加速查询,所以索引应该建立在主键列、惟一约束 列、条件语句常用列。
[0050] 4) Sargable 表达式
[0051] 在关系数据库中,如果数据库管理系统(Database Management System,简称为 "DBMS")能够利用索引对查询中的某个表达式的检索进行加速,该表达式被称为Sargable 表达式,该术语来源于Search Argument Able的缩写,也可称之为可SARG的表达式。
[0052] Sargable表达式通常是指列和常量的比较。如果一个检索表达式是sargable (可 SARG)表达式,意味着它能利用索引加速查询的完成。
[0053] 如果一个检索表达式是不可SARG的,意味着该检索表达式不能利用索引(至少部 分不能利用)来执行全表或索引扫描,会引起查询性能的下降。下列表达式,均为不可SARG 的表达式:
[0054] "is null","! = NOT",',Not Exist",',Not in",',Not Like","Like500%"。此外,在列上使用包含函数的的表达式、表达式两边都使用相同列的 表达式,以及,和不同列(非常量)比较的表达式,都不是可SARG的表达式。
[0055] 图1示出了本发明实施例的用于检索的方法100,该方法100包括:
[0056] S110,获取检索
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1