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

文档序号:8258861阅读:来源:国知局
表达式,该检索表达式用于在数据库中进行检索;
[0057] 具体地,该检索表达式一般由变量(也可称之为检索词)和各种逻辑运算符组成, 例如该检索表达式为vl+v2〈10,其中vl和v2为该检索表达式中的变量(检索词)。
[0058] S120,根据该检索表达式的变量及操作符,从预设的表达式集中选取该检索表达 式的匹配表达式;
[0059] S130,从该检索表达式的变量中选取目标变量,该目标变量在该数据库中建有索 引;
[0060] S140,根据该匹配表达式以及该目标变量,将该检索表达式转换成等价的 Sargable表达式;
[0061] S150,根据该Sargable表达式,通过该索引,在该数据库中进行检索。
[0062] 因此,本发明实施例提供的用于检索的方法,通过将检索表达式转换为Sargable 表达式,从而实现了利用索引来检索,能够有效提高检索的效率。
[0063] 在S110中,获取检索表达式,具体地,该检索表达式可以为连接场景下的检索表 达式,例如嵌套循环Nestloop Jion连接场景中的Jion表达式;该检索表达式还可以是查 询场景下的检索表达式,例如查询场景中的Filter表达式。
[0064] 可选地,在本发明实施例中,该检索表达式为连接场景下的或者查询场景下的检 索表达式。
[0065] 应理解,嵌套循环Nestloop Jion连接是关系数据库中一种常见的连接方式。在 Nestloop Jion连接中,进行连接的两个数据集合(数据表)分别成为外侧表(驱动表,也 可称之为Outer Side)和内侧表(被驱动表,也可称之为Inner Side)。首先处理外侧表中 每一行符合条件的数据,之后每一行数据和内侧表进行连接匹配结果,最终获取到结果集 合。具体地,在Nestloop Jion连接方式中,从外侧表(Outer Side)依次取记录,在内侧表 (Inner Side)按照Nestloop连接条件遍历查找,找到符合条件的连接记录。
[0066] 在嵌套循环Nest Loop Join中,保证连接列上能存在索引对象,可以很大程度低 提高Nest Loop Join的连接效率。
[0067] 在S120中,从预设的表达式集中选取该检索表达式的匹配表达式。具体地,该 预设的表达式集包括多种类型的表达式,如表1(b)中第一列所示。例如该检索表达式为 vl+v2〈10,则该检索表达式在该表达式集中的匹配表达式为a+b op c,其中,a对应于vl,b 对应于v2, op对应于〈,c对应于10。
[0068] 应理解,该预设的表达式集可以是系统预设的,或者是用户自定义的,本发明实施 例对此不做限定。
[0069] 在S130中,从该检索表达式的变量中选取在数据库中建有索引的目标变量。
[0070] 具体地,该检索表达式可以包括多个变量,从该多个变量中选取出建有索引的变 量。例如,该检索表达式为Sqrt (abs (vl_v2))〈10,该检索表达式具有两个变量vl和v2,如 果vl在数据库中建有索引,则将vl确定为该检索表达式的目标变量;如果vl和v2均在数 据库中建有索引,则可以将vl和v2中的任一个确定为该检索表达式的目标变量,或者将两 个变量vl和 V2都作为该检索表达式的目标变量。
[0071] 可选地,在本发明实施例中,从该检索表达式的变量中选取目标变量,包括:
[0072] 根据该数据库的索引信息,从该检索表达式的变量中选取目标变量,其中,该数据 库的索引信息中记录有在该数据库中建立有索引的变量。
[0073] 可选地,在本发明实施例中,也可以通过检测该检索表达式中的一个变量是否在 数据库中建有有索引,来确定该目标变量。更具体地,可以采用现有的任何可以判断一个变 量(也可称之为检索词)是否在数据库中建立有索引的方法,来确定该检索表达式中的目 标变量,本发明实施例对此不做限定。
[0074] 在S140中,可以根据预设的映射表,获取与该检索表达式等价的Sargable表 达式;也可以基于该目标变量,对该检索表达式反向解析,来获取与该检索表达式等价的 Sargable表达式,本发明实施例对此不做限定。
[0075] 可选地,在本发明实施例中,S140根据该匹配表达式以及该目标变量,将该检索表 达式转换成等价的Sargable表达式,包括:
[0076] 根据该匹配表达式以及该目标变量,通过预设的映射表,确定对应的Sargable表 达式,其中,该映射表中记录有该表达式集中的各表达式、该各表达式中的建立有索引的变 量以及Sargable表达式的映射关系。
[0077] 具体地,该预设的映射表如表1(a)和(b)所示,其中,表1(a)示出了操作符的定 义,表1 (b)中的第一列为预设的表达式集中包括的各表达式(类型),第二列为示出了各表 达式中的建立有索引的目标变量,第三列为第一列所示的表达式和第二列所示的目标变量 所对应的Sargable表达式,其中每一行的第一列,第二列和第三列之间具有映射关系。第 四列给出对应的示例。
[0078] 表 1 (a)
[0079]
【主权项】
1. 一种用于检索的方法,其特征在于,包括: 获取检索表达式,所述检索表达式用于在数据库中进行检索; 根据所述检索表达式的变量及操作符,从预设的表达式集中选取所述检索表达式的匹 配表达式; 从所述检索表达式的变量中选取目标变量,所述目标变量在所述数据库中建有索引; 根据所述匹配表达式W及所述目标变量,将所述检索表达式转换成等价的Sarg油le 表达式; 根据所述Sarg油1 e表达式,通过所述索引,在所述数据库中进行检索。
2. 根据权利要求1所述的方法,其特征在于,所述根据所述匹配表达式W及所述目标 变量,将所述检索表达式转换成等价的Sargable表达式,包括; 根据所述匹配表达式W及所述目标变量,通过预设的映射表,确定对应的Sargable表 达式,其中,所述映射表中记录有所述表达式集中的各表达式、所述各表达式中的建立有索 引的变量W及Sarg油le表达式的映射关系。
3. 根据权利要求1或2所述的方法,其特征在于,所述从所述检索表达式的变量中选取 目标变量,包括: 根据所述数据库的索引信息,从所述检索表达式的变量中选取目标变量,其中,所述数 据库的索引信息中记录有在所述数据库中建立有索引的变量。
4. 根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述匹配表达式W 及所述目标变量,将所述检索表达式转换成等价的Sarg油le表达式,包括: 在所述检索表达式为函数表达式或操作表达式的情况下,根据所述匹配表达式W及所 述目标变量,将所述检索表达式转换成等价的Sarg油le表达式; 所述方法还包括: 在所述检索表达式为条件表达式的情况下,根据所述检索表达式,在所述数据库中进 行检索。
5. 根据权利要求1至4中任一项所述的方法,其特征在于,所述检索表达式为连接场景 下的或者查询场景下的检索表达式。
6. -种用于检索的装置,其特征在于,包括: 获取模块,用于获取检索表达式,所述检索表达式用于在数据库中进行检索; 第一选取模块,用于根据所述获取模块获取的所述检索表达式的变量及操作符,从预 设的表达式集中选取所述检索表达式的匹配表达式; 第二选取模块,用于从所述获取模块获取的所述检索表达式的变量中选取目标变量, 所述目标变量在所述数据库中建有索引; 转换模块,用于根据所述第一选取模块选取的所述匹配表达式W及所述第二选取模块 选取的所述目标变量,将所述检索表达式转换成等价的Sargable表达式; 第一检索模块,用于根据所述转换模块转换所得的所述Sarg油le表达式,通过所述索 弓I,在所述数据库中进行检索。
7. 根据权利要求6所述的装置,其特征在于,所述转换模块具体用于,根据所述匹配 表达式W及所述目标变量,通过预设的映射表,确定对应的Sarg油le表达式,其中,所述 映射表中记录有所述表达式集中的各表达式、所述各表达式中的建立有索引的变量W及 Sarg油le表达式的映射关系。
8. 根据权利要求6或7所述的装置,其特征在于,所述第二选取模块具体用于,根据所 述数据库的索引信息,从所述检索表达式的变量中选取目标变量,其中,所述数据库的索引 信息中记录有在所述数据库中建立有索引的变量。
9. 根据权利要求6-8中任一项所述的装置,其特征在于,所述转换模块具体用于,在所 述检索表达式为函数表达式或操作表达式的情况下,根据所述匹配表达式W及所述目标变 量,将所述检索表达式转换成等价的Sarg油le表达式; 所述装置还包括: 第二检索模块,用于在所述检索表达式为条件表达式的情况下,根据所述检索表达式, 在所述数据库中进行检索。
10. 根据权利要求6至9中任一项所述的装置,其特征在于,所述检索表达式为连接场 景下的或者查询场景下的检索表达式。
【专利摘要】本发明实施例提供一种用于检索的方法和装置,该方法包括:获取检索表达式,该检索表达式用于在数据库中进行检索;根据该检索表达式的变量及操作符,从预设的表达式集中选取该检索表达式的匹配表达式;从该检索表达式的变量中选取目标变量,该目标变量在该数据库中建有索引;根据该匹配表达式以及该目标变量,将该检索表达式转换成等价的Sargable表达式;根据该Sargable表达式,通过该索引,在该数据库中进行检索。本发明实施例提供的用于检索的方法和装置,能够有效提高检索的效率。
【IPC分类】G06F17-30
【公开号】CN104572990
【申请号】CN201510003870
【发明人】黄海燕
【申请人】华为技术有限公司
【公开日】2015年4月29日
【申请日】2015年1月5日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1