CN102262675A - 数据库查询方法及智能卡 - Google Patents
数据库查询方法及智能卡 Download PDFInfo
- Publication number
- CN102262675A CN102262675A CN2011102311478A CN201110231147A CN102262675A CN 102262675 A CN102262675 A CN 102262675A CN 2011102311478 A CN2011102311478 A CN 2011102311478A CN 201110231147 A CN201110231147 A CN 201110231147A CN 102262675 A CN102262675 A CN 102262675A
- Authority
- CN
- China
- Prior art keywords
- field
- order
- connection
- value
- internal memory
- 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 60
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000008676 import Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 241000931705 Cicada Species 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库查询方法及智能卡,该方法包括:确定N个待连接表中每一个表的冗余字段的长度值,其中N大于等于2;根据所述每一个表的冗余字段的长度值,确定所述N个待连接表的连接顺序,其中,所述冗余字段的长度值越大的表,被执行连接操作的顺序越靠前;按照所述连接顺序对所述N个待连接表进行连接操作,并输出查询结果。本发明使得多表连接操作对内存的需求大大降低,从而提高了智能卡的操作效率及多连接成功率。
Description
技术领域
本发明涉及智能卡数据库技术领域,尤其涉及一种数据库查询方法及智能卡。
背景技术
随着信息化日益发展,将重要信息存放在便携式硬件中已经成为一种趋势。其中,大容量存储卡将数据库技术应用于智能卡操作系统,为更好更丰富的移动数据服务提供了一个崭新的实现平台。
连接是关系型数据库模型的主要特点,通过连接运算可以实现数据库中多个表的查询。这是此类数据库管理系统区别于其它类型数据库管理系统的一个标志。在关系型数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。智能卡作为一种关系型数据库的载体,同样需要实现表的连接,只是需要克服许多硬件限制。
现有的智能卡通过各表连接操作实现查询的方法为:按照传入的表的顺序对各表进行单条记录的读入;每读入一条记录便将该条记录的冗余字段删除。对于有连接条件的情况,按照传入的表的顺序对各表进行单条记录的读入时,将各表中满足连接条件的记录顺序读入,且每读入一条记录时删除该条记录的冗余字段,最后删除计算字段输出。而对于无连接条件的情况,按照传入的表的顺序对各表进行单条记录的读入时,需要读入所有表单条记录按上述顺序组合的所有情况,且每读入一条记录时删除该条记录的冗余字段,最后输出。
可见,在上述过程中,需要有足够的内容存放每次读入的数据,但是,由于智能卡内存大小的局限,将影响连接操作的实现。
各表初始时是有一定顺序的,按照原有顺序进行连接,内存消耗未必达到最小,假设读入数据可用的内存大小比利用该技术所需消耗的内存大小只少一个字节,此次连接仍会因内存不足而失败。
即使在内存大小足够的情况下进行多表连接,该技术将消耗更多的I/O次数,连接查询所需时间会因此增长,因而直接影响连接查询的效率。例如,在无连接条件时,设三个表的记录条数分别为10、5和2。若采用该技术,读表的次数总共将为:10+5×10+2×5×10=160。但反过来,读表的次数总共将为:2+5×2+10×5×2=112。可见,记录条数的数量级越高,该技术的I/O消耗就越明显。
发明内容
本发明提供一种数据库查询方法及智能卡,用以优化现有的多连接查询数据方法,提高智能卡的操作效率及多连接成功率。
本发明提供了一种数据库查询方法,包括:
确定N个待连接表中每一个表的冗余字段的长度值,其中N大于等于2;
根据所述每一个表的冗余字段的长度值,确定所述N个待连接表的连接顺序,其中,所述冗余字段的长度值越大的表,被执行连接操作的顺序越靠前;
按照所述连接顺序对所述N个待连接表进行连接操作,并输出查询结果。
本发明还提供了一种智能卡,包括:
冗余长度确定单元,用于确定N个待连接表中每一个表的冗余字段的长度值,其中N大于等于2;
连接顺序确定单元,用于根据所述每一个表的冗余字段的长度值,确定所述N个待连接表的连接顺序,其中,所述冗余字段的长度值越大的表,被执行连接操作的顺序越靠前;
连接输出单元,用于按照所述连接顺序对所述N个待连接表进行连接操作,并输出查询结果。
利用本发明提供的数据库查询方法及智能卡,具有以下有益效果:可以优化多连接查询,使得多表连接操作对内存的需求大大降低,从而提高了智能卡的操作效率及多连接成功率。
附图说明
图1为本发明实施例中数据库查询方法流程图;
图2为本发明实施例中数据库查询方法详细流程图;
图3为本发明实施例中对单个表的冗余字段长度值的计算方法流程图;
图4为本发明实施例中确定消耗最小内存连接顺序流程图;
图5为本发明实施例中智能卡结构图。
具体实施方式
下面结合附图和实施例对本发明提供的数据库查询方法及智能卡进行更详细地说明。
在关系型数据库中,每个表由至少一条记录构成,每条记录包括至少一个字段。对于有连接条件的查询,记录中字段的类型包括输出字段、计算字段和冗余字段三种。对于无连接条件的查询,记录中字段的类型包括输出字段、冗余字段两种。其中,输出字段是指该条记录中最终需输出的字段;计算字段是指不需要输出但需要参与后续连接计算的字段;冗余字段是指既不需输出又不需参与连接计算的字段。
举例说明,如表1为员工表,每条记录包括如下字段:编号、姓名、部门、性别;表2为员工工资表,每条记录包括如下字段:编号、薪资、入职年份。现在欲查找每名员工的薪资情况,此时,输出字段为:表1.姓名、表2.薪资;连接条件:表1.编号=表2.编号,即表1.编号和表2.编号为计算字段;剩下的表1.部门、表1.性别、表2.入职年份这三个字段既不输出又不参与连接,故为冗余字段。
表1员工表
编号 | 姓名 | 部门 | 性别 |
0001 | 张三 | 开发 | 男 |
0021 | 李四 | 行政 | 女 |
0136 | 王五 | 人事 | 男 |
...... | ...... | ...... | ...... |
0301 | 周九 | 市场 | 男 |
表2员工工资表
编号 | 薪资 | 入职年份 |
0001 | 6000 | 2010 |
0021 | 5000 | 2009 |
0136 | 4500 | 2011 |
...... | ...... | ...... |
0301 | 9000 | 2006 |
现有的智能卡通过各表连接操作实现查询的方法为:按照传入的表的顺序对各表进行单条记录的读入;每读入一条记录便将该条记录的冗余字段删除。下面给出表3,以有连接条件的情况说明3个表通过连接操作实现查询的方法。
表3员工信息表
编号 | 年龄 | 祖籍 |
0001 | 24 | 辽宁 |
0021 | 30 | 山东 |
0136 | 45 | 河北 |
...... | ...... | ...... |
0301 | 35 | 北京 |
在表1、表2和表3,现要求输出员工的姓名、薪资、年龄,则输出字段为:表1.姓名、表2.薪资、表3.年龄;连接条件:表1.编号=表2.编号=表3编号,即表1.编号、表2.编号、表3.编号为计算字段;剩下的表1.部门、表1.性别、表2.入职年份、表3.祖籍这四个字段为冗余字段。
则这3个表具体通过连接实现查询的方式为:
①读入表1的一条记录,并根据输出字段和计算字段的内容,将冗余字段删除;
具体实现过程为:读入表1中的一条记录
0001 | 张三 | 开发 | 男 |
删除冗余字段,得到
0001 | 张三 |
②在处理好的表1的记录后,紧接着读入表2的一条记录,与表1的计算字段进行匹配,将满足连接条件的表2记录根据输出字段和计算字段的内容,将冗余字段删除;
具体实现过程为:在表格1后面读入表2的一条记录
0001 | 张三 | 0001 | 6000 | 2010 |
删除表2的冗余字段,得到
0001 | 张三 | 0001 | 6000 |
③在处理好的表2的记录后,紧接着读入表3的一条记录,并作如2的操作;
具体实现过程为:读入表3的一条记录
0001 | 张三 | 0001 | 6000 | 0001 | 24 | 辽宁 |
删除表3的冗余字段,得到
0001 | 张三 | 0001 | 6000 | 0001 | 24 |
④删除计算字段,输出结果
张三 | 6000 | 24 |
之后再读入表1的一条记录,开始重复上述过程,直至读入表1的最后一条记录并重复完上述过程,完成查询操作。
由于现有的智能卡通过各表连接操作实现查询的方法对内存的需求比较高,而智能卡的内存资源非常有限,并且智能卡操作系统以及数据库都非常耗内存资源,因此能在查询时用于实现连接操作的内存资源更加有限,使得连接仍会因内存不足而失败的概率比较大。
而申请人研究发现,各表冗余字段长度及连接顺序综合影响对内存的消耗,若改变连接操作的各表顺序,有可能使改变连接顺序后内存消耗量比该原来所需内存不同。
关于各表冗余字段长度、连接顺序对内存消耗的综合影响,为方便阐述这一问题,先假设一个两表连接,分别命名为表R和表S。
设经过计算,表R和表S的冗余字段长度分别为rR和rS,而表R和表S的单条记录长度分别为lR和lS,假设rR≥rS,则对应连接顺序:先R后S和先S后R两种情况的内存消耗分别为:
先R后S:max(lR,(lR-rR)+lS)=max(lR,lR+(lS-rR));
先S后R:max(lS,(lS-rS)+lR)=max(lS,lS+(lR-rS))。
由于rR≥rS,且lR≥rR,则有lR-rS≥0可以看出,先S后R的连接顺序所需的内存为lS+(lR-rS)(≥lS)。
因为:
lS+(lR-rS)=lR+(lS-rS)≥lR(lS≥rS) (1)
lS+(lR-rS)=(lR+lS)-rS≥(lR+lS)-rR=lR+(lS-rR)(rR≥rS) (2)
由公式(1)和公式(2)可知先R后S的连接顺序所需内存不大于先S后R的连接顺序所需内存。
所以申请人研究得出,将冗余字段总长度大的表先做连接,可以节约连接过程中的内存消耗。
本发明实施例提供的数据库查询方法,如图1所示,包括以下步骤:
步骤S101,确定N个待连接表中每一个表的冗余字段的长度值,其中N大于等于2,且N为整数;
其中,所述冗余字段为各待连接表中既不需输出又不需参与连接计算的字段,由于冗余字段的确定与输出字段及计算字段有关,而每次查询操作时,由于检索字段不同而使输出字段及计算字段可能不同,因此冗余字段也可能不同;另外,在同一次查询操作中,各表中记录中的字段不同,因此所确定的冗余字段的具体内容也可能不同,因此各表的冗余字段长度值可能不同;
步骤S102,根据所述每一个表的冗余字段的长度值,确定所述N个待连接表的连接顺序,其中,所述冗余字段的长度值越大的表,被执行连接操作的顺序越靠前;
步骤S103,根据要查询的数据,按照所述连接顺序对所述N个待连接表进行连接操作,并输出查询结果。
由于先对冗余字段的长度值大的表进行连接操作,因此将本发明实施例的方法应用到关系型数据库查询中,可以优化多连接查询,使得多表连接操作对内存的需求大大降低,从而提高了智能卡的操作效率及多连接成功率。
由于智能卡运算过程中最耗时的当属智能卡存储器读写,因此尽量降低智能卡存储器的读写次数,可以有效地提高连接操作的效率。申请人进一步研究发现,表中的记录条数对I/O次数有影响,为方便阐述这一问题,仍假设一个两表连接,分别命名为表R和表S。
设表R和表S的记录条数分别为nR和nS,则对应连接顺序:先R后S和先S后R两种情况的I/O次数分别为:
先R后S:nR+nR×nS;
先S后R:nS+nS×nR。
经对比可知,当两表为单纯循环嵌套时,先连入记录条数少的,对应的I/O消耗较小。
因此,当冗余字段总长度相等时,将记录条数少的表先做连接,可以在消耗同样内存的同时,降低I/O次数多消耗。
进一步优选地,本发明实施例步骤S102中,根据各表的冗余字段的长度值,在确定所述N个待连接表的连接顺序时,对于冗余字段长度值相等的表,表中记录数目越少,表被执行连接操作的顺序越靠前。
因此本发明实施例中所提供的数据库查询方法,确定连接运算所需的内存最小时的连接顺序,将智能卡数据库多个表连接对内存的需求降到最低;同时确定了当内存消耗相同时,I/O消耗最小的连接顺序,从而优化了连接速度,提高了智能卡数据库多表连接的效率。
进一步地,在上述优选实施例的基础上为了避免在执行连接操作中,发现内存剩余值不足而使查询失败的情况,本发明的优选实施例中,在执行步骤S103之前,即按照所述确定的顺序对各表进行连接操作之前,进一步包括:
根据确定的连接顺序,确定上述N个待连接表执行连接操作所需消耗的内存最小值;
确定当前内存剩余值不小于所需消耗的内存最小值时,则按照所述确定的连接顺序对所述N个待连接表进行连接操作。
确定当前内存剩余值小于所需消耗的内存最小值时,进一步包括:
放弃本次数据库查询,或者等待至内存剩余值不小于所需消耗的内存最小值时,再按照所述确定的连接顺序对所述N个待连接表进行连接操作。
这样,可以保证在内存剩余值足够的情况下执行连接操作,提高了连接操作的效率。
本发明实施例对关系型数据库中多元关系连接进行优化,减少了关系连接的操作的内存空间耗费;在优化过程中尽量选取耗费I/O次数少的连接顺序,有效提高了多连接查询的效率。且在内存较小的情况下,仍可实现智能卡数据库多表的连接操作,克服了多表连接操作时内存不足所带来的障碍,充分发挥关系型数据库连接操作的优越性。
下面给出本发明优选实施例中数据库查询方法的详细流程,其中查询的数据库为关系型数据库,如图2所示,具体包括:
步骤S201,确定要查询关系型数据库数据时,确定N个待连接表中每一个表的冗余字段的长度值,其中N大于等于2;
关系型数据库中存储有多个表,每次查询操作时,根据用户的选择或其它方式可以确定待连接表。
关系型数据库的特点是,对于有连接条件的查询,记录中字段的类型包括输出字段、计算字段和冗余字段三种。对于无连接条件的查询,记录中字段的类型包括输出字段、冗余字段两种。其中,输出字段是指该条记录中最终需输出的字段;计算字段是指不需要输出但需要参与后续连接计算的字段;冗余字段是指既不需输出又不需参与连接计算的字段。不管对于哪种查询,具体地,对于每个表的冗余字段的长度值,可以采用如下方式:
将所述每一个表的各个字段的名称分别与输出字段的名称和计算字段的名称进行比较,由于根据比较结果可以确定各字段是输出字段、计算字段还是冗余字段,因此可以确定每一个表的各个字段中属于冗余字段的字段名称;
根据所述属于冗余字段的字段名称以及所述每一个表的各个字段的长度值,确定每一个表的冗余字段的长度值。
步骤S202,根据计算得到的各表的冗余字段的长度值,对各表按照冗余字段长度值从大到小的顺序进行排序;
步骤S203,在排序过程中,判断是否存在冗余字段长度相等的表,若存在,执行步骤S204,否则执行步骤S208;
步骤S204,计算冗余字段长度相等的各表中的记录条数;
步骤S205,判断计算的记录条数是否相等,若相等,执行步骤S206,否则执行步骤S207;
步骤S206,根据冗余字段长度值排序的大小顺序,确定连接顺序,冗余字段的长度值越大的表,被执行连接操作的顺序越靠前,其中,对于冗余字段长度值相等的各表,不进行先后顺序的区分,执行步骤S209;
步骤S207,根据冗余字段长度值排序的大小顺序,确定连接顺序,冗余字段的长度值越大的表,被执行连接操作的顺序越靠前,其中,对于冗余字段长度值相等的各表,确定先对记录条数少的表进行连接,后对记录条数多的表进行连接,执行步骤S209;
步骤S208,根据冗余字段长度值排序的大小顺序,确定连接顺序,冗余字段的长度值越大的表,被执行连接操作的顺序越靠前,执行步骤S209;
步骤S209,根据确定的要执行连接操作的各表的连接顺序,确定N个待连接表执行连接操作所需消耗的内存最小值,具体地,可以采用如下方式:
按照确定的N个待连接表的连接顺序,分别计算每个表的单条记录的长度,与该表之前的所有表删除冗余字段后的单条记录的长度的和,获得N个数值;
确定所述N个数值中的最大值为执行连接操作所需消耗的内存最小值。
步骤S210,判断执行连接操作所需消耗的内存最小值是否小于等于当前内存剩余值,即判断本次连接是否可以实现,若是,执行步骤S211,否则执行步骤S212;
由于智能卡的内存有限,因此确定内存消耗量及剩余量对智能卡至关重要,在智能卡中存在一段程序来实现计算内存量的功能,其具体实现方式为现有技术,这里就不做详解了。
步骤S211,此时内存充足,按照确定的顺序对各表进行连接操作,并输出查询结果,具体过程包括:
在各表有连接条件时,按照确定的顺序,对各表中满足连接条件的单条记录进行读入,读入每条记录时删除该记录的冗余字段,删除最后一个表中记录的冗余字段后,删除用于连接条件计算的计算字段并输出查询结果;
在各表无连接条件时,按照确定的顺序对各表进行单条记录的读入,且需读入所有表单条记录按照所述确定的顺序组合的所有情况,在读入每条记录时删除该记录的冗余字段,删除最后一个表中记录的冗余字段后输出查询结果。
步骤S212,放弃本次对关系型数据库的查询。
本实施例中所查询的关系型数据库是以大容量智能卡为载体的嵌入式移动数据库。
具体实施时,可以将参与连接的表的个数、需要最终输出的字段、不需要输出但需要参与后续连接计算的字段、输出结果的长度、剩余内存的大小、各表的冗余字段的长度值,以数据结构的形式存储。将一个表中的记录条数、单条记录的长度、各字段的字段名及各字段的字段长度以数据结构的形式存储,并采用指针形式指向参与连接的表。
智能卡剩余内存的大小可通过智能卡中其它函数计算得出,待连接表中各冗余字段长度值,如图3所示,具体可以采用如下方式确定:
步骤S301,将冗余字段的长度值初始化为表中单条记录的长度值;
步骤S302,确定表中单条记录的所有各字段是否都参与过与输出字段和计算字段的匹配,若是,结束,否则,执行步骤S303;
步骤S303,将表中单条记录的未参与过匹配的各字段逐个分别与输出字段和计算字段进行匹配;
步骤S304,确定该字段是否与输出字段或计算字段匹配,如果匹配,执行步骤S305,否则执行步骤S302;
步骤S305,如果匹配,说明当前字段不是冗余字段,根据匹配结果,将当前冗余字段的长度值减去该与输出字段或计算字段匹配的字段的长度值,返回执行步骤S302。
当然,也可以采用另一种方式计算,如:将冗余字段的长度值初始化为0;对表中单条记录中各字段分别与输出字段和计算字段进行匹配;根据匹配结果,在该字段与输出字段不匹配且与计算字段也不匹配时,确定为冗余字段,将冗余字段的长度值加上该字段的长度值,直至表中单条记录的所有字段匹配结束时,得到该表的冗余字段的长度值。
上述为计算每个表的冗余字段长度值的方式,对于N个待连接表的冗余字段长度值的计算,可以将指针采用循环方式逐个指向各个表的数据结构,获取相应的参数进行该表的冗余字段的长度计算,并将计算的该表的冗余字段长度值存储在数据结构中。
对计算得到的各表的冗余长度字段的长度值,按照从大到小的顺序进行排序,对于冗余字段长度相等的,按照记录条数从少到多排序,并根据排序的结果,确定出各表的连接操作顺序具体可以采用如下流程实现。
对于N个待连接表,按照表传入的顺序,采用循环嵌套方式,逐个确定出未完成排序的各表中最先连接的表,初始时,所有的表未完成排序,如图4所示,包括:
步骤S401,确定是否完成所有表的排序,若是,结束,否则,执行步骤S402;
步骤S402,确定未完成排序的所有表是否已参与过冗余字段长度值比较,若是,执行步骤S403,否则,执行步骤S404;
步骤S403,确定除已完成排序的表外当前位置最靠前的表已完成排序,即在已完成排序的表之后最先执行当前位置最靠前的表,返回执行步骤S401;
步骤S404,将未完成排序的表中位置最靠前的表与后面各表的冗余字段长度值比较;
步骤S405,若发现有表的冗余字段长度值大于未完成排序的表中位置最靠前的表的冗余字段长度值,或若有表的冗余字段长度值与未完成排序的表中位置最靠前的表的冗余字段长度值相同,但该表的记录条数小于未完成排序的表中位置最靠前的表,则执行步骤S406,否则执行步骤S402;
步骤S406,交换两表的顺序,返回执行步骤S402。
可见,本实施例具体通过首先比较第一个表的冗余字段长度值与后面各表的冗余字段长度值,若发现有表的冗余字段长度值大于第一个表的冗余字段长度值,则交换两表的顺序,若有表的冗余字段长度值与第一个表的冗余字段长度值相同,但该表的记录条数小于第一个表,则交换两表的顺序,否则,继续进行下一个表与第一个表的比较,从而确定出连接顺序中的第一个表;之后比较第二个表与后面各表的冗余字段长度值,并按上述处理方式确定出排序中的第二个表,依次类推完成连接顺序确定。
当然,也可以采用另一种方式,如逐个确定冗余字段长度值最小的表,具体为:对于N个待连接表,按照表传入的顺序,采用循环嵌套方式,首先比较第一个表的冗余字段长度值与后面各表的冗余字段长度值,若发现有表的冗余字段长度值小于第一个表的冗余字段长度值,则交换两表的顺序,若有表的冗余字段长度值与第一个表的冗余字段长度值相同,但该表的记录条数大于第一个表,则交换两表的顺序,否则,继续进行下一个表与第一个表的比较,从而确定出连接顺序中的第一个表;之后比较第二个表与后面各表的冗余字段长度值,并按上述处理方式确定出排序中的第二个表,依次类推完成连接顺序确定
采用这种方式确定连接顺序后,在执行连接操作时,按照从后向前的顺序执行连接操作。
具体地,要实现对所需消耗的内存最小值的计算,可以引入一个临时变量,具体流程详见如下:
将所需消耗的内存最小值初始化为0,并将临时变量初始化为0;
按照所述连接顺序,逐个计算每个表中的单条记录的长度,与该表之前的所有表的单条记录删除冗余字段后的长度的和,将每次计算后得到的值放在临时变量中,对于第一个表,临时变量的值等于第一个表中单条记录的长度值;将当前临时变量的值与所需消耗的内存最小值比较,并将其中较大的一个值赋值给所需消耗的内存最小值,从而在完成最后一个表的上述计算时,通过比较临时变量的值和所需消耗内存最小值,并将其中较大的一个值赋值给所需消耗的内存最小值,得到实际的所需消耗的内存最小值。
本发明实施例之所以将I/O消耗放在次要位置,是因为智能卡数据库多连接操作面临的主要障碍是内存小,操作无法实现的问题。因此,在进行智能卡数据库多连接查询优化时,应将实现问题放在首位进行考虑。
本发明实施例充分考虑了实际应用需求,不仅提供了计算消耗内存最小的连接顺序的方法,用来确定连接顺序及连接所需内存,还提供了在消耗内存相同的情况下,节约I/O消耗的连接顺序确定方法,在内存需求优化的同时,对连接速度也有一定的优化作用。同时还可以确定剩余的内存是否足够完成指定的连接计算。
基于同一发明构思,本发明实施例中还提供了一种智能卡,由于该智能卡解决问题的原理与一种数据库查询方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。
本发明实施例提供一种智能卡,如图5所示,包括:
冗余长度确定单元501,用于确定N个待连接表中每一个表的冗余字段的长度值,其中N大于等于2;
连接顺序确定单元502,用于根据所述每一个表的冗余字段的长度值,确定所述N个待连接表的连接顺序,其中,所述冗余字段的长度值越大的表,被执行连接操作的顺序越靠前;
连接输出单元503,用于按照所述连接顺序对所述N个待连接表进行连接操作,并输出查询结果。
优选地,在确定所述N个待连接表的连接顺序且存在冗余字段的长度值相等的表时,连接顺序确定单元502还用于:确定冗余字段的长度值相等的每个表的记录数目,记录数目越少的表,被执行连接操作的顺序越靠前。
优选地,本实施例中的智能卡还包括:内存消耗确定单元504,用于根据所述连接顺序,确定执行连接操作所需消耗的内存最小值,并和当前内存剩余值进行比较;
在当前内存剩余值不小于所需消耗的内存最小值时,触发所述连接输出单元按照所述连接顺序对所述N个待连接表进行连接操作;
在当前内存剩余值小于所需消耗的内存最小值时,放弃本次数据库查询,或者等待至内存剩余值不小于所需消耗的内存最小值时,再触发所述连接输出单元按照所述连接顺序对所述N个待连接表进行连接操作。
优选地,内存消耗确定单元504根据所述连接顺序,确定执行连接操作所需消耗的内存最小值,具体包括:
按照所述连接顺序,分别计算每个表的单条记录的长度,与该表之前的所有表删除冗余字段后的单条记录的长度的和,获得N个数值;
确定所述N个数值中的最大值为执行连接操作所需消耗的内存最小值。
优选地,连接输出单元503根据要查询的数据,按照所述确定的顺序对各表进行连接操作,具体包括:在各表有连接条件时,按照所述确定的顺序,对各表中满足连接条件的单条记录进行读入,读入每条记录时删除该记录的冗余字段,删除最后一个表中记录的冗余字段后,删除用于连接条件计算的计算字段并输出;在各表无连接条件时,按照所述确定的顺序,对各表进行单条记录的读入,且需读入所有表单条记录按照确定的顺序组合的所有情况,在读入每条记录时删除该记录的冗余字段,删除最后一个表中记录的冗余字段后输出。
优选地,冗余长度确定单元501确定N个待连接表中每一个表的冗余字段的长度值,具体包括:将所述每一个表的各个字段的名称分别与输出字段的名称和计算字段的名称进行比较,确定所述每一个表的各个字段中属于冗余字段的字段名称;根据所述属于冗余字段的字段名称以及所述每一个表的各个字段的长度值,确定每一个表的冗余字段的长度值。
本发明实施例确定的连接顺序,使得在连接查询内存需求最小的基础上,减少I/O消耗,即在充分减少多连接操作所需内存后,可以对连接顺序进行适当优化,提高连接速度,从而提高智能卡数据库的操作效率,充分发挥关系数据库连接运算的优越性。同时,通过本发明实施例,在多连接查询优化后就可以判断内存是否充足,能否支持连接操作的执行,提高了智能卡数据库的性能、品质和质量。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据库查询方法,其特征在于,包括:
确定N个待连接表中每一个表的冗余字段的长度值,其中N大于等于2;
根据所述每一个表的冗余字段的长度值,确定所述N个待连接表的连接顺序,其中,所述冗余字段的长度值越大的表,被执行连接操作的顺序越靠前;
按照所述连接顺序对所述N个待连接表进行连接操作,并输出查询结果。
2.如权利要求1所述的方法,其特征在于,在确定所述N个待连接表的连接顺序时,对于冗余字段的长度值相等的表,表中记录数目越少,表被执行连接操作的顺序越靠前。
3.如权利要求1或2所述的方法,其特征在于,按照所述连接顺序对所述N个待连接表进行连接操作之前,进一步包括:
根据所述连接顺序,确定执行连接操作所需消耗的内存最小值;
确定当前内存剩余值不小于所需消耗的内存最小值时,按照所述连接顺序对所述N个待连接表进行连接操作;
确定当前内存剩余值小于所需消耗的内存最小值时,放弃本次数据库查询,或者等待至内存剩余值不小于所需消耗的内存最小值时,再按照所述连接顺序对所述N个待连接表进行连接操作。
4.如权利要求3所述的方法,其特征在于,根据所述连接顺序,确定执行连接操作所需消耗的内存最小值,具体包括:
按照所述连接顺序,分别计算每个表的单条记录的长度,与该表之前的所有表删除冗余字段后的单条记录的长度的和,获得N个数值;
确定所述N个数值中的最大值为执行连接操作所需消耗的内存最小值。
5.如权利要求1或2所述的方法,其特征在于,所述确定N个待连接表中每一个表的冗余字段的长度值,具体包括:
将所述每一个表的各个字段的名称分别与输出字段的名称和计算字段的名称进行比较,确定所述每一个表的各个字段中属于冗余字段的字段名称;
根据所述属于冗余字段的字段名称以及所述每一个表的各个字段的长度值,确定每一个表的冗余字段的长度值。
6.一种智能卡,其特征在于,包括:
冗余长度确定单元,用于确定N个待连接表中每一个表的冗余字段的长度值,其中N大于等于2;
连接顺序确定单元,用于根据所述每一个表的冗余字段的长度值,确定所述N个待连接表的连接顺序,其中,所述冗余字段的长度值越大的表,被执行连接操作的顺序越靠前;
连接输出单元,用于按照所述连接顺序对所述N个待连接表进行连接操作,并输出查询结果。
7.如权利要求6所述的智能卡,其特征在于,在确定所述N个待连接表的连接顺序且存在冗余字段的长度值相等的表时,连接顺序确定单元还用于:确定冗余字段的长度值相等的每个表的记录数目,记录数目越少的表,被执行连接操作的顺序越靠前。
8.如权利要求6或7所述的智能卡,其特征在于,还包括:
内存消耗确定单元,用于根据所述连接顺序,确定执行连接操作所需消耗的内存最小值;
触发单元,用于在当前内存剩余值不小于所需消耗的内存最小值时,触发所述连接输出单元按照所述连接顺序对所述N个待连接表进行连接操作;在当前内存剩余值小于所需消耗的内存最小值时,放弃本次数据库查询,或者等待至内存剩余值不小于所需消耗的内存最小值时,再触发所述连接输出单元按照所述连接顺序对所述N个待连接表进行连接操作。
9.如权利要求8所述的智能卡,其特征在于,内存消耗确定单元具体用于:
按照所述连接顺序,分别计算每个表的单条记录的长度,与该表之前的所有表删除冗余字段后的单条记录的长度的和,获得N个数值;
确定所述N个数值中的最大值为执行连接操作所需消耗的内存最小值。
10.如权利要求6或7所述的智能卡,其特征在于,冗余长度确定单元具体用于:
将所述每一个表的各个字段的名称分别与输出字段的名称和计算字段的名称进行比较,确定所述每一个表的各个字段中属于冗余字段的字段名称;
根据所述属于冗余字段的字段名称以及所述每一个表的各个字段的长度值,确定每一个表的冗余字段的长度值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110231147 CN102262675B (zh) | 2011-08-12 | 2011-08-12 | 数据库查询方法及智能卡 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110231147 CN102262675B (zh) | 2011-08-12 | 2011-08-12 | 数据库查询方法及智能卡 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102262675A true CN102262675A (zh) | 2011-11-30 |
CN102262675B CN102262675B (zh) | 2013-01-16 |
Family
ID=45009303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110231147 Expired - Fee Related CN102262675B (zh) | 2011-08-12 | 2011-08-12 | 数据库查询方法及智能卡 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102262675B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186651A (zh) * | 2011-12-31 | 2013-07-03 | 中国移动通信集团公司 | 一种分布式关系数据库及其建立、查询方法和装置 |
CN106202386A (zh) * | 2016-07-08 | 2016-12-07 | 唐博 | 自动分析数据库表关系的方法 |
CN106933927A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表的连接方法和装置 |
CN107203550A (zh) * | 2016-03-17 | 2017-09-26 | 华为技术有限公司 | 一种数据处理方法和数据库服务器 |
WO2018058671A1 (zh) * | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 执行多表连接操作的控制方法及对应装置 |
CN110609945A (zh) * | 2018-05-29 | 2019-12-24 | 优信拍(北京)信息科技有限公司 | 一种二手车业务数据的查询方法,装置及系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030167272A1 (en) * | 2002-03-04 | 2003-09-04 | International Business Machines Corporation | System and a two-pass algorithm for determining the optimum access path for multi-table SQL queries |
CN1492361A (zh) * | 2002-10-25 | 2004-04-28 | 联想(北京)有限公司 | 嵌入式数据库查询的处理方法 |
CN1613071A (zh) * | 2001-12-06 | 2005-05-04 | 施蓝姆伯格系统公司 | 查询嵌入式数据库的方法 |
US20060136380A1 (en) * | 2004-12-17 | 2006-06-22 | Purcell Terence P | System and method for executing a multi-table query |
CN1834957A (zh) * | 2005-03-17 | 2006-09-20 | 华为技术有限公司 | 一种数据库多表信息初始化方法 |
CN101000635A (zh) * | 2007-01-10 | 2007-07-18 | 凤凰微电子(中国)有限公司 | 一种智能卡的海量数据存储与管理方法 |
CN101216827A (zh) * | 2007-12-27 | 2008-07-09 | 北京握奇数据系统有限公司 | 智能卡中数据库的查询方法及装置 |
CN101295316A (zh) * | 2008-05-29 | 2008-10-29 | 北京握奇数据系统有限公司 | 位图索引方法以及智能卡 |
US20100030731A1 (en) * | 2008-07-31 | 2010-02-04 | Teradata Us, Inc. | Cost-based query rewrite using materialized views |
US20100153409A1 (en) * | 2008-12-12 | 2010-06-17 | Joshi Mahesh V | Computer-Implemented Systems And Methods For Providing Paginated Search Results From A Database |
CN101770479A (zh) * | 2008-12-31 | 2010-07-07 | 北京亿阳信通软件研究院有限公司 | 一种关联关系的查询方法及装置 |
CN101840430A (zh) * | 2010-04-28 | 2010-09-22 | 北京握奇数据系统有限公司 | 智能卡数据库多表操作方法及装置 |
-
2011
- 2011-08-12 CN CN 201110231147 patent/CN102262675B/zh not_active Expired - Fee Related
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1613071A (zh) * | 2001-12-06 | 2005-05-04 | 施蓝姆伯格系统公司 | 查询嵌入式数据库的方法 |
US20030167272A1 (en) * | 2002-03-04 | 2003-09-04 | International Business Machines Corporation | System and a two-pass algorithm for determining the optimum access path for multi-table SQL queries |
CN1492361A (zh) * | 2002-10-25 | 2004-04-28 | 联想(北京)有限公司 | 嵌入式数据库查询的处理方法 |
US20060136380A1 (en) * | 2004-12-17 | 2006-06-22 | Purcell Terence P | System and method for executing a multi-table query |
CN1834957A (zh) * | 2005-03-17 | 2006-09-20 | 华为技术有限公司 | 一种数据库多表信息初始化方法 |
CN101000635A (zh) * | 2007-01-10 | 2007-07-18 | 凤凰微电子(中国)有限公司 | 一种智能卡的海量数据存储与管理方法 |
CN101216827A (zh) * | 2007-12-27 | 2008-07-09 | 北京握奇数据系统有限公司 | 智能卡中数据库的查询方法及装置 |
CN101295316A (zh) * | 2008-05-29 | 2008-10-29 | 北京握奇数据系统有限公司 | 位图索引方法以及智能卡 |
US20100030731A1 (en) * | 2008-07-31 | 2010-02-04 | Teradata Us, Inc. | Cost-based query rewrite using materialized views |
US20100153409A1 (en) * | 2008-12-12 | 2010-06-17 | Joshi Mahesh V | Computer-Implemented Systems And Methods For Providing Paginated Search Results From A Database |
CN101770479A (zh) * | 2008-12-31 | 2010-07-07 | 北京亿阳信通软件研究院有限公司 | 一种关联关系的查询方法及装置 |
CN101840430A (zh) * | 2010-04-28 | 2010-09-22 | 北京握奇数据系统有限公司 | 智能卡数据库多表操作方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186651A (zh) * | 2011-12-31 | 2013-07-03 | 中国移动通信集团公司 | 一种分布式关系数据库及其建立、查询方法和装置 |
CN106933927A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表的连接方法和装置 |
CN106933927B (zh) * | 2015-12-31 | 2019-12-10 | 北京国双科技有限公司 | 数据表的连接方法和装置 |
CN107203550A (zh) * | 2016-03-17 | 2017-09-26 | 华为技术有限公司 | 一种数据处理方法和数据库服务器 |
CN107203550B (zh) * | 2016-03-17 | 2021-01-01 | 华为技术有限公司 | 一种数据处理方法和数据库服务器 |
CN106202386A (zh) * | 2016-07-08 | 2016-12-07 | 唐博 | 自动分析数据库表关系的方法 |
WO2018058671A1 (zh) * | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 执行多表连接操作的控制方法及对应装置 |
US11301470B2 (en) | 2016-09-30 | 2022-04-12 | Huawei Technologies Co., Ltd. | Control method for performing multi-table join operation and corresponding apparatus |
CN110609945A (zh) * | 2018-05-29 | 2019-12-24 | 优信拍(北京)信息科技有限公司 | 一种二手车业务数据的查询方法,装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102262675B (zh) | 2013-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103186566B (zh) | 一种数据分级存储方法、装置及系统 | |
CN102262675B (zh) | 数据库查询方法及智能卡 | |
CN103930888B (zh) | 基于更新、储存及响应约束的多粒度分组聚合选择 | |
CN102968496B (zh) | 基于任务驱动和双缓冲机制的并行排序方法 | |
US20120109888A1 (en) | Data partitioning method of distributed parallel database system | |
CN103631910A (zh) | 一种分布式数据库多列复合查询的系统及方法 | |
CN103577440A (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
CN107818115A (zh) | 一种处理数据表的方法及装置 | |
CN102663114A (zh) | 面向并发olap的数据库查询处理方法 | |
CN102135995A (zh) | 一种etl数据清洗设计方法 | |
CN102243664B (zh) | 一种复合字段的数据存储及查询方法 | |
CN104298736A (zh) | 数据集合连接方法、装置及数据库系统 | |
CN102629269A (zh) | 一种嵌入式数据库的检索及存储方法 | |
CN101840430A (zh) | 智能卡数据库多表操作方法及装置 | |
CN102375827A (zh) | 一种对版本化的电网模型数据库进行快速加载的方法 | |
CN110096509A (zh) | 大数据环境下实现历史数据拉链表存储建模处理的系统及方法 | |
CN103324765A (zh) | 一种基于列存储的多核并行数据查询优化方法 | |
CN103064908B (zh) | 一种通过内存快速去重名单的方法 | |
CN101620600A (zh) | 一种海量数据的处理方法 | |
CN112269797A (zh) | 一种卫星遥感数据在异构计算平台上的多维查询方法 | |
CN114860727A (zh) | 拉链表更新方法及装置 | |
CN102402540A (zh) | 基于多层优化平衡树的数值与文本混合倒排索引算法 | |
CN101650734A (zh) | 一种表单过滤方法、装置、表单处理系统及信息处理设备 | |
CN111382209B (zh) | 分布式内存数据库的数据转存和操作方法 | |
CN101789024A (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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee after: BEIJING WATCHDATA Co.,Ltd. Address before: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee before: BEIJING WATCH DATA SYSTEM Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130116 |