CN103226610A - 数据库表查询方法和装置 - Google Patents
数据库表查询方法和装置 Download PDFInfo
- Publication number
- CN103226610A CN103226610A CN2013101645767A CN201310164576A CN103226610A CN 103226610 A CN103226610 A CN 103226610A CN 2013101645767 A CN2013101645767 A CN 2013101645767A CN 201310164576 A CN201310164576 A CN 201310164576A CN 103226610 A CN103226610 A CN 103226610A
- Authority
- CN
- China
- Prior art keywords
- storage area
- index value
- record
- checked
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000006870 function Effects 0.000 claims abstract description 82
- 238000012217 deletion Methods 0.000 claims description 16
- 230000037430 deletion Effects 0.000 claims description 16
- 238000012545 processing Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据库表查询方法和装置,通过根据查询条件中的目标索引值,查询根据查询条件中的查询函数对记录进行计算获得的索引值生成的区域索引,从而确定待查询存储区域,再利用查询条件中的查询函数对待查询存储区域中的记录进行计算,进而获得待查询存储区域中的记录的索引值,以对待查询存储区域中的目标索引值对应的记录进行操作,不需要用户预先获知进行操作的记录在指定列上的取值,扩大了区域索引的适用范围,由于利用查询条件中的查询函数生成区域索引,使得区域索引与用户定义的查询条件相适应,增强了区域索引的使用灵活性。
Description
技术领域
本发明实施例涉及数据库领域,尤其涉及一种数据库表查询方法和装置。
背景技术
数据库表是一系列二维数组的集合,由纵向的列和横向的行组成。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名;行包括了若干列信息项,一行数据称为一个或一条记录。在数据库表中,在对数据库表中的记录进行包括查询、修改和删除在内的各种操作之前,要获取数据库表中需要进行操作的记录。现有技术首先利用数据库表索引确定数据库表中需进行查询的存储区域,然后将所确定的需要进行查询的存储区域加载到内存中进行查询,进而从该存储区域所包含的记录中获取需要进行操作的记录。上述数据库表索引主要用于存储数据库表中每个存储区域所包含的记录在指定列上的最大值和最小值。
由于数据库表索引仅存储有每个存储区域所包含的记录在指定列上的最大值和最小值,仅能满足用户已知需要进行操作的记录在所述指定列上的取值时的查询需求,数据库表查询的灵活性较差。
发明内容
本发明实施例提供一种数据库表查询方法和装置,用于提高数据库表查询的灵活性。
第一个方面是提供一种数据库表查询方法,包括:
接收查询条件;所述查询条件包括查询函数以及目标索引值;所述查询函数用于计算数据库表中包含的记录的索引值;所述目标索引值为待操作记录的索引值;
查询所述数据库表中各个存储区域的区域索引,根据所述目标索引值和查询到的区域索引确定待查询存储区域;每个所述存储区域的区域索引用于指示该存储区域中的记录的索引值的取值范围;
利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算,以得到所述待查询存储区域中的各个记录的索引值;
若所述待查询存储区域中的所有记录的索引值中,存在与所述目标索引值相同的索引值,则对与所述目标索引值相同的索引值对应的记录进行操作。
在第一方面的第一种可能的实现方式中,所述查询所述数据库表中各个存储区域的区域索引,根据所述目标索引值和查询到的区域索引确定待查询存储区域,包括:
将所述目标索引值分别与每个所述存储区域的区域索引指示的取值范围进行比较,获取指示的取值范围包括所述目标索引值的区域索引,将所获取的区域索引所对应的存储区域作为所述待查询存储区域。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述将所述目标索引值分别与每个所述存储区域的区域索引指示的取值范围进行比较之前,还包括:
利用所述查询函数计算每个所述存储区域中的记录的索引值,并根据计算出的索引值生成每个所述存储区域对应的区域索引。
在第一方面的第三种可能的实现方式中,在所述对所述待查询存储区域中所述目标索引值对应的记录进行操作之后,还包括:
若所述操作为修改或删除,则将所述待查询存储区域的区域索引删除。
在第一方面的第四种可能的实现方式中,若所述待查询存储区域中的所有记录的索引值中,不存在与所述目标索引值相同的索引值,则根据计算获得的所述待查询存储区域中的各个记录的索引值更新所述待查询存储区域的区域索引。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第五种可能的实现方式中,在所述利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算之前,还包括:将所述待查询存储区域加载到内存中;所述利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算包括:利用所述查询函数对加载到内存中的所述待查询存储区域中的记录进行计算,获得所述待查询存储区域中的记录的索引值。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第六种可能的实现方式中,每个所述存储区域为数据页。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式和第一方面的第四种可能的实现方式,在第七种可能的实现方式中,每个所述存储区域的区域索引包括该存储区域中的记录的索引值中的最大值和最小值;或者包括所述存储区域中的记录的索引值中的真值;或者包括该存储区域中的记录的索引值中的假值。
第二个方面是提供一种数据库表查询装置,包括:
接收模块,用于接收查询条件;所述查询条件包括查询函数以及目标索引值;所述查询函数用于计算数据库表中包含的记录的索引值;所述目标索引值为待操作记录的索引值;
确定模块,用于查询所述数据库表中各个存储区域的区域索引,根据所述目标索引值和查询到的区域索引确定待查询存储区域;每个所述存储区域的区域索引用于指示该存储区域中的记录的索引值的取值范围;
计算模块,用于利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算,以得到所述待查询存储区域中的各个记录的索引值;
操作处理模块,用于若所述待查询存储区域中的所有记录的索引值中,存在与所述目标索引值相同的索引值,则对与所述目标索引值相同的索引值对应的记录进行操作。
在第二方面的第一种可能的实现方式中,所述确定模块,包括:
比较单元,用于将所述目标索引值分别与每个所述存储区域的区域索引指示的取值范围进行比较,获取指示的取值范围包括所述目标索引值的区域索引,将所获取的区域索引所对应的存储区域作为所述待查询存储区域。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定模块,还包括:
生成单元,用于利用所述查询函数计算每个所述存储区域中的记录的索引值,并根据计算出的索引值生成每个所述存储区域对应的区域索引。
在第二方面的第三种可能的实现方式中,所述装置还包括:
删除模块,用于若所述操作为修改或删除,则将所述待查询存储区域所对应的区域索引删除。
在第二方面第四种可能的实现方式中,所述装置还包括:
更新模块,用于若所述待查询存储区域中的所有记录的索引值中,不存在与所述目标索引值相同的索引值,则根据计算获得的所述待查询存储区域中的各个记录的索引值更新所述待查询存储区域的区域索引。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式和第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述装置,还包括:
加载模块,用于将所述待查询存储区域加载到内存中;
所述计算模块,具体用于利用所述查询函数对加载到内存中的所述待查询存储区域中的记录进行计算,获得所述待查询存储区域中的记录的索引值。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式和第二方面的第四种可能的实现方式,在第六种可能的实现方式中,每个所述存储区域为数据页。。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式和第二方面的第四种可能的实现方式,在第七种可能的实现方式中,每个所述存储区域的区域索引包括该存储区域中的记录的索引值中的最大值和最小值;或者包括所述存储区域中的记录的索引值中的真值;或者包括该存储区域中的记录的索引值中的假值。
本发明实施例提供的数据库表查询方法,通过根据查询条件中的目标索引值,查询根据查询条件中的查询函数对记录进行计算获得的索引值生成的区域索引,从而确定待查询存储区域,再利用查询条件中的查询函数对待查询存储区域中的记录进行计算,进而获得待查询存储区域中的记录的索引值,以对待查询存储区域中的目标索引值对应的记录进行操作,不需要用户预先获知进行操作的记录在指定列上的取值,扩大了区域索引的适用范围,由于利用查询条件中的查询函数生成区域索引,使得区域索引与用户定义的查询条件相适应,增强了区域索引的使用灵活性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的数据库表查询方法流程示意图;
图2为本发明另一实施例提供的数据库表查询方法流程示意图;
图3为本发明又一实施例提供的数据库表查询装置结构示意图;
图4为本发明又一实施例提供的数据库表查询装置结构示意图;
图5为本发明又一实施例提供的数据库表查询装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的数据库表查询方法流程示意图,如图1所示,本实施例可以包括:
101、接收查询条件。
其中,查询条件包括查询函数以及目标索引值;所述查询函数用于计算数据库表中包含的记录的索引值;所述目标索引值为待操作记录的索引值。
102、查询所述数据库表中各个存储区域的区域索引,根据所述目标索引值和查询到的区域索引确定待查询存储区域。
其中,每个所述存储区域的区域索引用于指示该存储区域中的记录的索引值的取值范围,可为:该存储区域中的记录的索引值中的最大值和最小值;或者包括所述存储区域中的记录的索引值中的真值;或者包括该存储区域中的记录的索引值中的假值。每个所述存储区域为数据页。
利用所述查询函数计算每个所述存储区域中的记录的索引值,并根据计算出的索引值生成每个所述存储区域对应的区域索引。将目标索引值分别与每个所述存储区域的区域索引指示的取值范围进行比较,获取指示的取值范围包括所述目标索引值的区域索引,将所获取的区域索引所对应的存储区域作为所述待查询存储区域。本实施例中,利用区域索引确定待查询存储区域,可以实现过滤掉不必进行计算的存储区域,加快数据库表查询的速度。
需要说明的是,上述真值表示利用查询函数对记录进行计算所获得的索引值为非零;上述假值表示利用查询函数对记录进行计算所获得的索引值为零。
103、利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算,以得到所述待查询存储区域中的各个记录的索引值。
若待查询存储区域不存在于内存中,将待查询存储区域加载到内存中。利用所述查询函数对加载到内存中的所述待查询存储区域中的记录进行计算,获得所述待查询存储区域中的记录的索引值。
104、若所述待查询存储区域中的所有记录的索引值中,存在与所述目标索引值相同的索引值,则对与所述目标索引值相同的索引值对应的记录进行操作。
若上述待查询存储区域中的记录的索引值中,存在上述目标索引值,对上述待查询存储区域中上述目标索引值对应的记录进行操作。
进一步,若104中的操作为修改或删除,则将上述待查询存储区域所对应的区域索引删除。
进一步,若所述待查询存储区域中的所有记录的索引值中,不存在与所述目标索引值相同的索引值,则根据计算获得的所述待查询存储区域中的各个记录的索引值更新所述待查询存储区域的区域索引。
需要说明的是,区域索引存储于内存中,不持久化到磁盘,若数据库实例重启动,则区域索引丢失。本实施例中,利用查询条件提供的目标索引值和各存储区域的区域索引,确定待查询存储区域从而实现过滤掉不必进行计算的存储区域的方式,同样适用于类似的需要进行过滤的场景。
本实施例中,通过根据查询条件中的目标索引值,查询根据查询条件中的查询函数对记录进行计算获得的索引值在各个存储区域中的取值范围生成的区域索引,从而确定待查询存储区域,再利用查询条件中的查询函数对待查询存储区域中的记录进行计算,进而获得待查询存储区域中的记录的索引值,以对待查询存储区域中的目标索引值对应的记录进行操作,不需要用户预先获知进行操作的记录在指定列上的取值,扩大了区域索引的适用范围,由于根据查询条件中的查询函数生成区域索引,使得区域索引与用户定义的查询条件相适应,增强了区域索引的使用灵活性。
图2为本发明另一实施例提供的数据库表查询方法流程示意图,如图2所示,本实施例可以包括:
201、生成区域索引。
其中,区域索引用于指示区域索引所对应存储区域中的记录的索引值的取值范围。
将需生成区域索引的存储区域加载到内存中,利用查询函数对上述存储区域中的记录进行计算,获得上述存储区域中的记录的索引值;根据上述索引值的数据类型,生成区域索引。若上述索引值的数据类型为整型,生成用于指示上述索引值在上述区域索引所对应的存储区域中的最大值和最小值的区域索引;若上述索引值的数据类型为布尔型,生成用于指示上述索引值在上述区域索引所对应的存储区域中是否存在真值,或者生成用于指示上述索引值在上述区域索引所对应的存储区域中是否存在假值的区域索引。
例如:对于如下表1所示的名为“merchants”数据库表,生成区域索引。
表1
订货日期(order_date) | 发运日期(ship_date) |
2012-07-31 | 2012-08-01 |
2012-07-31 | 2012-08-02 |
2012-07-31 | 2012-08-03 |
2012-08-01 | 2012-08-03 |
2012-08-01 | 2012-08-04 |
2012-08-01 | 2012-08-05 |
2012-08-02 | 2012-08-06 |
2012-08-02 | 2012-08-07 |
2012-08-02 | 2012-08-08 |
2012-08-03 | 2012-08-05 |
2012-08-03 | 2012-08-09 |
2012-08-03 | 2012-08-11 |
其中,“order_date”和“ship_date”分别为该列的字段名。以每三条记录即三行为一个存储区域,上述数据库表共包含四个存储区域,存储区域的标识分别为“Page1”至“Page4”。
根据获取的SQL语句create page index on merchants(func_response_days(ship_date,order_date))开始生成区域索引,其中func_response_days()为用户定义的查询函数。将需要生成区域索引的存储区域加载到内存中。利用func_response_days()函数对加载到内存中的存储区域中的每一条记录进行计算,获得记录的索引值,判断索引值为整型,根据存储区域中记录的索引值的最大值和最小值,生成区域索引。生成的区域索引如下表2所示。
表2
存储区域的标识 | 索引值的最小值 | 索引值的最大值 |
Page1 | 1 | 3 |
Page2 | 2 | 4 |
Page3 | 4 | 6 |
Page4 | 2 | 8 |
例如:对于如下表3所示的名为“students”数据库表,生成区域索引。
表3
标识码(ID) | 姓名(name) | 性别(gender) | 国籍(nationality) |
1 | Wangying | Female | China |
2 | Sunyanzi | Male | Singapore |
3 | Knizhnik | Male | Russia |
4 | Lura | Female | Brazil |
5 | Bisheng | Female | China |
6 | Nanda | Female | India |
7 | Biying | Male | China |
8 | Wangsheng | Male | China |
9 | Cameron | Male | Britain |
10 | Anna | Female | Germany |
11 | Sarkozy | Male | Germany |
12 | suphie | Female | Poland |
其中,“ID”、“name”、“gender”和“nationality”分别为该列的字段名。以每三条记录即三行为一个存储区域,上述数据库表共包含四个存储区域,存储区域的标识分别为“Page1”至“Page4”。
根据获取的SQL语句create page index on student(nationality=‘Germany’and gender=‘Female’)开始生成区域索引,其中nationality=‘Germany’andgender=‘Female’为用户定义的查询函数。将需要建立区域索引的存储区域加载到内存中。利用上述查询函数对加载到内存中的存储区域中的每一条记录进行计算,获得记录的索引值,判断出索引值为布尔型,根据索引值在上述存储区域中存在真值或者均为假值,生成区域索引。生成的区域索引如下表4所示。
表4
存储区域的标识 | 是否存在真值 |
Page1 | FALSE |
Page2 | FALSE |
Page3 | FALSE |
Page4 | TRUE |
其中,“FALSE”表示对存储区域中的记录进行计算获得的索引值中不存在取值为真的索引值即均为假值,“TRUE”表示对存储区域中的记录进行计算获得的索引值中存在取值为真的索引值。
需要说明的是,用户可根据查询需要对查询函数进行定义,该查询函数即用户定义函数(user-defined function,UDF),建立区域索引使用的查询函数与查询条件指示的查询过程中对待查询的页中的记录进行计算所使用的查询函数相同。查询函数可包括表达式,可利用哈希表对利用查询函数生成的区域索引进行管理。
另外需要说明的是,上述真值表示利用查询函数对记录进行计算所获得的索引值为非零;上述假值表示利用查询函数对记录进行计算所获得的索引值为零。
202、接收查询条件。
其中,查询条件包括查询过程中所使用的查询函数,以及目标索引值。
例如:获取以SQL语句表示的查询条件,解析SQL语句,生成执行计划树。
203、获取存储区域的标识。
获取数据库表中存储区域的标识,以根据存储区域的标识查询与存储区域的标识对应的区域索引。
204、判断是否存在上述存储区域对应的区域索引,若存在,执行205,否则执行210。
根据获取的存储区域的标识,查询与存储区域的标识对应的区域索引,若可查询到与存储区域的标识对应的区域索引,执行205-209,若不存在上述存储区域对应的区域索引,执行210-212。
205、判断目标索引值是否属于区域索引指示的取值范围,若包括执行206,否则执行203。
将目标索引值与查询到的区域索引进行比较,若所述目标索引值属于区域索引指示的取值范围,则将上述区域索引对应的存储区域作为待查询存储区域。否则,获取数据库表中下一个存储区域的标识,直至数据库表中所有存储区域均执行完毕。
例如:根据接收的SQL语句select*from merchants where(func_response_days(ship_date,order_date)﹥7)对名为“merchants”的数据表的区域索引进行查询,滤掉不满足SQL语句中的where子句中指定的利用func_response_days(ship_date,order_date)查询函数获得的索引值大于7的存储区域。由于表2中的前三个存储区域的标识对应的区域索引中最大值均小于7,仅第四个存储区域的标识对应的区域索引中最大值大于7,满足查询条件,则确定待查询存储区域为存储区域的标识为“Page4”所对应的存储区域。
例如:根据接收的SQL语句select*from student where(nationality=‘Germany’and gender=‘Female’)对名为“student”的数据表的区域索引进行查询,滤掉不满足where子句中指定的利用nationality=‘Germany’andgender=‘Female’查询函数获得的索引值不存在真值的存储区域,即滤掉索引值的取值均为假值的存储区域。由于表4中前三个存储区域的标识对应的区域索引均为“FALSE”,即不存在取值为真的索引值,仅第四个存储区域的标识对应的区域索引为“TRUE”,即存在取值为真的索引值,满足查询条件。则确定待查询存储区域为存储区域的标识为“Page4”所对应的存储区域。
206、判断内存中是否存在待查询存储区域,若不存在执行207,若存在执行208。
207、将上述待查询存储区域加载到内存中。
208、利用查询函数对待查询存储区域中的各个记录进行计算,获得待查询存储区域中的各个记录的索引值。
209、若待查询存储区域中的记录的索引值中,存在与所述目标索引值相同的索引值,对待查询存储区域中与所述目标索引值相同的索引值对应的记录进行操作。
将目标索引值与获得的各个记录的索引值进行比较,若待查询存储区域中的记录的索引值中,存在与所述目标索引值相同的索引值,对待查询存储区域中与所述目标索引值相同的索引值对应的记录进行操作。进行操作之后,若上述操作为修改或删除,则将上述记录所在的存储区域所对应的区域索引删除。
210、若内存中不存在上述存储区域,将上述存储区域加载到内存中。
211、利用查询函数计算上述存储区域中的记录的索引值,并根据计算出的索引值生成所述存储区域对应的区域索引。
212、若存储区域中的记录的索引值中,存在与所述目标索引值相同的索引值,对存储区域中与所述目标索引值相同的索引值对应的记录进行操作。
将目标索引值与获得的各个记录的索引值进行比较,若存储区域中的记录的索引值中,存在与所述目标索引值相同的索引值,对存储区域中与所述目标索引值相同的索引值对应的记录进行操作。操作之后,若上述操作为修改或删除,则将上述记录所在的存储区域所对应的区域索引删除。
可重复执行203-211,直至对数据库表中的所有存储区域均执行完毕。
本实施例中,存储区域可为数据页,上述数据页为将数据库表中的记录加载到内存中的最小单位,一般为8KB。基于此,待查询存储区域为待查询的数据页。
本实施例提供的数据库表查询方法,通过根据查询条件中的目标索引值,查询根据查询条件中的查询函数对记录进行计算获得的索引值在各个存储区域中的取值范围生成的区域索引,从而确定待查询存储区域,再利用查询条件中的查询函数对待查询存储区域中的记录进行计算,进而获得待查询存储区域中的记录的索引值,以对待查询存储区域中的目标索引值对应的记录进行操作,不需要用户预先获知进行操作的记录在指定列上的取值,扩大了区域索引的适用范围,由于根据查询条件中的查询函数生成区域索引,使得区域索引与用户定义的查询条件相适应,增强了区域索引的使用灵活性。另外,若上述存储区域不存在对应的上述区域索引,生成上述存储区域对应的区域索引,以及操作处理模块当对记录进行的操作为修改或删除时,将待查询存储区域所对应的区域索引删除,以及更新待查询存储区域的区域索引,实现了对区域索引的维护。
图3为本发明又一实施例提供的数据库表查询装置结构示意图,如图3所示,本实施例可以包括:接收模块31、确定模块32、计算模块33和操作处理模块34。
接收模块31,用于接收查询条件。
其中,查询条件包括查询函数以及目标索引值;查询函数用于计算数据库表中包含的记录的索引值;目标索引值为待操作记录的索引值。
确定模块32,与接收模块31连接,用于查询数据库表中各个存储区域的区域索引,根据目标索引值和查询到的区域索引确定待查询存储区域。
其中,每个所述存储区域的区域索引用于指示该存储区域中的记录的索引值的取值范围,每个所述存储区域的区域索引包括该存储区域中的记录的索引值中的最大值和最小值;或者包括所述存储区域中的记录的索引值中的真值;或者包括该存储区域中的记录的索引值中的假值。
计算模块33,与确定模块32连接,用于利用查询函数分别对所述待查询存储区域中的每个记录进行计算,以得到所述待查询存储区域中的各个记录的索引值。
操作处理模块34,与计算模块33连接,用于若待查询存储区域中的所有记录的索引值中,存在与目标索引值相同的索引值,则对与目标索引值相同的索引值对应的记录进行操作。
本实施例提供的数据库表查询装置的各功能模块可用于执行图1所示的数据库表查询方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的数据库表查询装置具体可为数据库管理系统(databasemanagement system,DBMS),在联机事务处理(OnLine Transaction Processing,OLTP)系统的应用场景中,OLTP系统向DBMS发送查询条件,以对与该查询条件中目标索引值相同的索引值对应的记录进行操作,DBMS根据查询条件,执行本实施例所描述的处理步骤。
本实施例中,通过根据查询条件中的目标索引值,确定模块查询根据查询条件中的查询函数对记录进行计算获得的索引值在各个存储区域中的取值范围生成的区域索引,从而确定待查询存储区域,计算模块再利用查询条件中的查询函数对待查询存储区域中的记录进行计算,进而获得待查询存储区域中的记录的索引值,以使操作处理模块对待查询存储区域中的目标索引值对应的记录进行操作,不需要用户预先获知进行操作的记录在指定列上的取值,扩大了区域索引的适用范围,由于根据查询条件中的查询函数生成区域索引,使得区域索引与用户定义的查询条件相适应,增强了区域索引的使用灵活性。
图4为本发明又一实施例提供的数据库表查询装置结构示意图,在上一实施例的基础上,如图4所示,本实施例中,确定模块32进一步包括:
比较单元321,用于将所述目标索引值分别与每个所述存储区域的区域索引指示的取值范围进行比较,获取指示的取值范围包括所述目标索引值的区域索引,将所获取的区域索引所对应的存储区域作为所述待查询存储区域。
进一步,确定模块32还包括:
生成单元322,与比较单元321连接,用于利用所述查询函数计算每个所述存储区域中的记录的索引值,并根据计算出的索引值生成每个所述存储区域对应的区域索引。
进一步,数据库表查询装置还包括:
删除模块35,与操作处理模块34连接,用于若对与所述目标索引值相同的索引值对应的记录进行的操作为修改或删除,则将所述待查询存储区域所对应的区域索引删除。
进一步,数据库表查询装置还包括:
更新模块36,与计算模块33连接,用于若待查询存储区域中的所有记录的索引值中,不存在与所述目标索引值相同的索引值,则根据计算获得的所述待查询存储区域中的各个记录的索引值更新所述待查询存储区域的区域索引。
进一步,数据库表查询装置还包括:
加载模块37,分别与确定模块32和计算模块33连接,用于将待查询存储区域加载到内存中。
基于此,计算模块33,具体用于利用查询函数对加载到内存中的所述待查询存储区域中的记录进行计算,获得所述待查询存储区域中的记录的索引值。
本实施中,存储区域可为数据页,基于此,待查询存储区域可为待查询数据页。
本实施例提供的数据库表查询装置的各功能模块可用于执行图2所示的数据库表查询方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的数据库表查询装置具体可为数据库管理系统(databasemanagement system,DBMS),在联机事务处理(OnLine TransactionProcessing,OLTP)系统的应用场景中,OLTP系统向DBMS发送查询条件,以对与该查询条件中目标索引值相同的索引值对应的记录进行操作,DBMS根据查询条件,执行本实施例所描述的处理步骤。
本实施例中,通过根据查询条件中的目标索引值,确定模块查询根据查询条件中的查询函数对记录进行计算获得的索引值在各个存储区域中的取值范围生成的区域索引,从而确定待查询存储区域,计算模块再利用查询条件中的查询函数对待查询存储区域中的记录进行计算,进而获得待查询存储区域中的记录的索引值,以使操作处理模块对待查询存储区域中的目标索引值对应的记录进行操作,不需要用户预先获知进行操作的记录在指定列上的取值,扩大了区域索引的适用范围,由于根据查询条件中的查询函数生成区域索引,使得区域索引与用户定义的查询条件相适应,增强了区域索引的使用灵活性。另外,通过若上述存储区域不存在对应的上述区域索引,生成上述存储区域对应的区域索引,以及操作处理模块当对记录进行的操作为修改或删除时,将待查询存储区域所对应的区域索引删除,以及更新待查询存储区域的区域索引,实现了对区域索引的维护。
图5为本发明又一实施例提供的数据库表查询装置结构示意图,如图5所示,本实施例可以包括:存储器51、通信接口52和处理器53。
存储器51,用于存放程序。具体的,程序可以包括程序代码,上述程序代码包括计算机操作指令。存储器51可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
通信接口52,用于接收查询条件;所述查询条件包括查询函数以及目标索引值;所述查询函数用于计算数据库表中包含的记录的索引值;所述目标索引值为待操作记录的索引值。
处理器53,用于执行存储器51存放的程序,以用于:查询所述数据库表中各个存储区域的区域索引,根据所述目标索引值和查询到的区域索引确定待查询存储区域;每个所述存储区域的区域索引用于指示该存储区域中的记录的索引值的取值范围;利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算,以得到所述待查询存储区域中的各个记录的索引值;若所述待查询存储区域中的所有记录的索引值中,存在与所述目标索引值相同的索引值,则对与所述目标索引值相同的索引值对应的记录进行操作。
其中,每个所述存储区域的区域索引包括该存储区域中的记录的索引值中的最大值和最小值;或者包括所述存储区域中的记录的索引值中的真值;或者包括该存储区域中的记录的索引值中的假值。
可选的,处理器53具体用于利用所述查询函数计算每个所述存储区域中的记录的索引值,并根据计算出的索引值生成每个所述存储区域对应的区域索引;将所述目标索引值分别与每个所述存储区域的区域索引指示的取值范围进行比较,获取指示的取值范围包括所述目标索引值的区域索引,将所获取的区域索引所对应的存储区域作为所述待查询存储区域;将所述待查询存储区域加载到内存中;利用所述查询函数对加载到内存中的所述待查询存储区域中的记录进行计算,获得所述待查询存储区域中的记录的索引值;若所述待查询存储区域中的所有记录的索引值中,不存在与所述目标索引值相同的索引值,则根据计算获得的所述待查询存储区域中的各个记录的索引值更新所述待查询存储区域的区域索引;若所述待查询存储区域中的所有记录的索引值中,存在与所述目标索引值相同的索引值,则对与所述目标索引值相同的索引值对应的记录进行操作;若所述操作为修改或删除,则将所述待查询存储区域的区域索引删除。
本实施中,存储区域可为数据页,基于此,待查询存储区域可为待查询数据页。
本实施例提供的数据库表查询装置的各功能模块可用于执行图1和图2所示的数据库表查询方法流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例中,通过根据查询条件中的目标索引值,查询根据查询条件中的查询函数对记录进行计算获得的索引值在各个存储区域中的取值范围生成的区域索引,从而确定待查询存储区域,再利用查询条件中的查询函数对待查询存储区域中的记录进行计算,进而获得待查询存储区域中的记录的索引值,以对待查询存储区域中的目标索引值对应的记录进行操作,不需要用户预先获知进行操作的记录在指定列上的取值,扩大了区域索引的适用范围,由于根据查询条件中的查询函数生成区域索引,使得区域索引与用户定义的查询条件相适应,增强了区域索引的使用灵活性。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (16)
1.一种数据库表查询方法,其特征在于,包括:
接收查询条件;所述查询条件包括查询函数以及目标索引值;所述查询函数用于计算数据库表中包含的记录的索引值;所述目标索引值为待操作记录的索引值;
查询所述数据库表中各个存储区域的区域索引,根据所述目标索引值和查询到的区域索引确定待查询存储区域;每个所述存储区域的区域索引用于指示该存储区域中的记录的索引值的取值范围;
利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算,以得到所述待查询存储区域中的各个记录的索引值;
若所述待查询存储区域中的所有记录的索引值中,存在与所述目标索引值相同的索引值,则对与所述目标索引值相同的索引值对应的记录进行操作。
2.根据权利要求1所述的数据库表查询方法,其特征在于,所述查询所述数据库表中各个存储区域的区域索引,根据所述目标索引值和查询到的区域索引确定待查询存储区域,包括:
将所述目标索引值分别与每个所述存储区域的区域索引指示的取值范围进行比较,获取指示的取值范围包括所述目标索引值的区域索引,将所获取的区域索引所对应的存储区域作为所述待查询存储区域。
3.根据权利要求2所述的数据库表查询方法,其特征在于,所述将所述目标索引值分别与每个所述存储区域的区域索引指示的取值范围进行比较之前,还包括:
利用所述查询函数计算每个所述存储区域中的记录的索引值,并根据计算出的索引值生成每个所述存储区域对应的区域索引。
4.根据权利要求1所述的数据库表查询方法,其特征在于,在所述对所述待查询存储区域中所述目标索引值对应的记录进行操作之后,还包括:
若所述操作为修改或删除,则将所述待查询存储区域的区域索引删除。
5.根据权利要求1所述的数据库表查询方法,其特征在于,还包括:
若所述待查询存储区域中的所有记录的索引值中,不存在与所述目标索引值相同的索引值,则根据计算获得的所述待查询存储区域中的各个记录的索引值更新所述待查询存储区域的区域索引。
6.根据权利要求1-5任一项所述的数据库表查询方法,其特征在于,在所述利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算之前,还包括:
将所述待查询存储区域加载到内存中;
所述利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算包括:利用所述查询函数对加载到内存中的所述待查询存储区域中的记录进行计算,获得所述待查询存储区域中的记录的索引值。
7.根据权利要求1-5任一项所述的数据库表查询方法,其特征在于,每个所述存储区域为数据页。
8.根据权利要求1-5任一项所述的数据库表查询方法,其特征在于,每个所述存储区域的区域索引包括该存储区域中的记录的索引值中的最大值和最小值;或者包括所述存储区域中的记录的索引值中的真值;或者包括该存储区域中的记录的索引值中的假值。
9.一种数据库表查询装置,其特征在于,包括:
接收模块,用于接收查询条件;所述查询条件包括查询函数以及目标索引值;所述查询函数用于计算数据库表中包含的记录的索引值;所述目标索引值为待操作记录的索引值;
确定模块,用于查询所述数据库表中各个存储区域的区域索引,根据所述目标索引值和查询到的区域索引确定待查询存储区域;每个所述存储区域的区域索引用于指示该存储区域中的记录的索引值的取值范围;
计算模块,用于利用所述查询函数分别对所述待查询存储区域中的每个记录进行计算,以得到所述待查询存储区域中的各个记录的索引值;
操作处理模块,用于若所述待查询存储区域中的所有记录的索引值中,存在与所述目标索引值相同的索引值,则对与所述目标索引值相同的索引值对应的记录进行操作。
10.根据权利要求9所述的数据库表查询装置,其特征在于,所述确定模块,包括:
比较单元,用于将所述目标索引值分别与每个所述存储区域的区域索引指示的取值范围进行比较,获取指示的取值范围包括所述目标索引值的区域索引,将所获取的区域索引所对应的存储区域作为所述待查询存储区域。
11.根据权利要求10所述的数据库表查询装置,其特征在于,所述确定模块,还包括:
生成单元,用于利用所述查询函数计算每个所述存储区域中的记录的索引值,并根据计算出的索引值生成每个所述存储区域对应的区域索引。
12.根据权利要求9所述的数据库表查询装置,其特征在于,所述装置还包括:
删除模块,用于若所述操作为修改或删除,则将所述待查询存储区域所对应的区域索引删除。
13.根据权利要求9所述的数据库表查询装置,其特征在于,所述装置还包括:
更新模块,用于若所述待查询存储区域中的所有记录的索引值中,不存在与所述目标索引值相同的索引值,则根据计算获得的所述待查询存储区域中的各个记录的索引值更新所述待查询存储区域的区域索引。
14.根据权利要求9-13任一项所述的数据库表查询装置,其特征在于,所述装置,还包括:
加载模块,用于将所述待查询存储区域加载到内存中;
所述计算模块,具体用于利用所述查询函数对加载到内存中的所述待查询存储区域中的记录进行计算,获得所述待查询存储区域中的记录的索引值。
15.根据权利要求9-13任一项所述的数据库表查询装置,其特征在于,每个所述存储区域为数据页。
16.根据权利要求9-13任一项所述的数据库表查询装置,其特征在于,每个所述存储区域的区域索引包括该存储区域中的记录的索引值中的最大值和最小值;或者包括所述存储区域中的记录的索引值中的真值;或者包括该存储区域中的记录的索引值中的假值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310164576.7A CN103226610B (zh) | 2013-05-07 | 2013-05-07 | 数据库表查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310164576.7A CN103226610B (zh) | 2013-05-07 | 2013-05-07 | 数据库表查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103226610A true CN103226610A (zh) | 2013-07-31 |
CN103226610B CN103226610B (zh) | 2016-06-29 |
Family
ID=48837055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310164576.7A Active CN103226610B (zh) | 2013-05-07 | 2013-05-07 | 数据库表查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103226610B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729471A (zh) * | 2014-01-21 | 2014-04-16 | 华为软件技术有限公司 | 数据库查询方法和装置 |
WO2016101659A1 (zh) * | 2014-12-22 | 2016-06-30 | 华为技术有限公司 | 一种业务数据查询方法及装置、数据库系统 |
WO2016127851A1 (en) * | 2015-02-12 | 2016-08-18 | Huawei Technologies Co., Ltd. | Method and query optimization server for associating functions with columns for optimizing query execution |
WO2017190370A1 (en) * | 2016-05-04 | 2017-11-09 | Huawei Technologies Co., Ltd. | Distributed database systems and methods of distributing and accessing data |
CN110704437A (zh) * | 2019-09-26 | 2020-01-17 | 上海达梦数据库有限公司 | 数据库查询语句的修改方法、装置、设备和存储介质 |
CN112462366A (zh) * | 2020-10-10 | 2021-03-09 | 深圳大学 | 一种sar数据点可视化方法、智能终端及存储介质 |
CN114201515A (zh) * | 2021-12-20 | 2022-03-18 | 北京鼎普科技股份有限公司 | 一种数据库内容快速检查的方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030097354A1 (en) * | 2001-11-19 | 2003-05-22 | Finlay Ian R. | Method and system for index sampled tablescan |
US20050027692A1 (en) * | 2003-07-29 | 2005-02-03 | International Business Machines Corporation. | Method, system, and program for accessing data in a database table |
US20050228772A1 (en) * | 2004-03-31 | 2005-10-13 | International Business Machines Corporation | Apparatus and method for using values from a frequent values list to bridge additional keys in a database index |
CN101404013A (zh) * | 2008-11-13 | 2009-04-08 | 山东浪潮齐鲁软件产业股份有限公司 | 数据库大数据量表存储和查询方法 |
US20090182724A1 (en) * | 2008-01-11 | 2009-07-16 | Paul Reuben Day | Database Query Optimization Using Index Carryover to Subset an Index |
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
CN102915382A (zh) * | 2012-11-21 | 2013-02-06 | 亚信联创科技(中国)有限公司 | 一种基于索引的数据库的数据查询方法和装置 |
-
2013
- 2013-05-07 CN CN201310164576.7A patent/CN103226610B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030097354A1 (en) * | 2001-11-19 | 2003-05-22 | Finlay Ian R. | Method and system for index sampled tablescan |
US20050027692A1 (en) * | 2003-07-29 | 2005-02-03 | International Business Machines Corporation. | Method, system, and program for accessing data in a database table |
US20050228772A1 (en) * | 2004-03-31 | 2005-10-13 | International Business Machines Corporation | Apparatus and method for using values from a frequent values list to bridge additional keys in a database index |
US20090182724A1 (en) * | 2008-01-11 | 2009-07-16 | Paul Reuben Day | Database Query Optimization Using Index Carryover to Subset an Index |
CN101404013A (zh) * | 2008-11-13 | 2009-04-08 | 山东浪潮齐鲁软件产业股份有限公司 | 数据库大数据量表存储和查询方法 |
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
CN102915382A (zh) * | 2012-11-21 | 2013-02-06 | 亚信联创科技(中国)有限公司 | 一种基于索引的数据库的数据查询方法和装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729471A (zh) * | 2014-01-21 | 2014-04-16 | 华为软件技术有限公司 | 数据库查询方法和装置 |
CN103729471B (zh) * | 2014-01-21 | 2017-03-08 | 华为软件技术有限公司 | 数据库查询方法和装置 |
WO2016101659A1 (zh) * | 2014-12-22 | 2016-06-30 | 华为技术有限公司 | 一种业务数据查询方法及装置、数据库系统 |
WO2016127851A1 (en) * | 2015-02-12 | 2016-08-18 | Huawei Technologies Co., Ltd. | Method and query optimization server for associating functions with columns for optimizing query execution |
WO2017190370A1 (en) * | 2016-05-04 | 2017-11-09 | Huawei Technologies Co., Ltd. | Distributed database systems and methods of distributing and accessing data |
CN109154933A (zh) * | 2016-05-04 | 2019-01-04 | 华为技术有限公司 | 分布式数据库系统以及分布和访问数据的方法 |
US10691723B2 (en) | 2016-05-04 | 2020-06-23 | Huawei Technologies Co., Ltd. | Distributed database systems and methods of distributing and accessing data |
CN110704437A (zh) * | 2019-09-26 | 2020-01-17 | 上海达梦数据库有限公司 | 数据库查询语句的修改方法、装置、设备和存储介质 |
CN110704437B (zh) * | 2019-09-26 | 2022-05-20 | 上海达梦数据库有限公司 | 数据库查询语句的修改方法、装置、设备和存储介质 |
CN112462366A (zh) * | 2020-10-10 | 2021-03-09 | 深圳大学 | 一种sar数据点可视化方法、智能终端及存储介质 |
CN112462366B (zh) * | 2020-10-10 | 2023-08-08 | 深圳大学 | 一种sar数据点可视化方法、智能终端及存储介质 |
CN114201515A (zh) * | 2021-12-20 | 2022-03-18 | 北京鼎普科技股份有限公司 | 一种数据库内容快速检查的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103226610B (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103226610A (zh) | 数据库表查询方法和装置 | |
US11631124B1 (en) | System and method of mapping product attributes between different schemas | |
CN104915450B (zh) | 一种基于HBase的大数据存储与检索方法及系统 | |
US10747762B2 (en) | Automatic generation of sub-queries | |
WO2020057471A1 (en) | Materialized views for database query optimization | |
US20090006315A1 (en) | Structured method for schema matching using multiple levels of ontologies | |
CN110472068A (zh) | 基于异构分布式知识图谱的大数据处理方法、设备及介质 | |
CN104317960A (zh) | 一种批处理作业的处理方法和装置 | |
CN102270225A (zh) | 数据变更日志监控方法和数据变更日志监控装置 | |
US9384202B1 (en) | Gateway module to access different types of databases | |
US10580006B2 (en) | System and method of managing data injection into an executing data processing system | |
CN103902698A (zh) | 一种数据存储系统和存储方法 | |
CN104090962A (zh) | 面向海量分布式数据库的嵌套查询方法 | |
US20130198117A1 (en) | Systems and methods for semantic data integration | |
CN103744948A (zh) | 查找数据核对差异原因的方法和系统 | |
CN107729330A (zh) | 获取数据集的方法和装置 | |
CN103092997A (zh) | 用于报表分析的联动查询系统和联动查询方法 | |
CN105046414A (zh) | 用于erp系统的业务追溯方法及装置 | |
CN105095436A (zh) | 数据源数据自动建模方法 | |
US9454557B2 (en) | Unit of work based incremental data processing | |
CN105678475B (zh) | 风险预警方法和设备 | |
CN104750743A (zh) | 一种交易文件勾对系统和方法 | |
Scherbaum et al. | Spline: Spark lineage, not only for the banking industry | |
CN110941952A (zh) | 一种完善审计分析模型的方法及装置 | |
CN106354829A (zh) | 一种列存数据库的物化方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211224 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: xFusion Digital Technologies Co., Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |