一种索引处理方法与设备的制造方法

文档序号:9687491阅读:444来源:国知局
一种索引处理方法与设备的制造方法
【技术领域】
[0001]本申请涉及数据库技术领域,尤其涉及一种索引处理技术。
【背景技术】
[0002]在实际数据库查询、管理等应用中,数据库中单表数据可能十分庞大,若想从一张包含大量数据的表中查询到目标数据,往往为数据库带来过重的负载,进而影响到数据库的性能。

【发明内容】

[0003]本申请的目的是提供一种索引处理方法与设备。
[0004]根据本申请的一个方面,提供了一种索引处理方法,包括:
[0005]获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;
[0006]合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个所述第二索引。
[0007]根据本申请的另一方面,还提供了一种索引处理设备,包括:
[0008]第一装置,用于获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;
[0009]第二装置,用于合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个所述第二索引。
[0010]与现有技术相比,本申请通过将数据库表中多个针对单条数据库操作语句的建议索引合并生成合并索引,从而针对数据库表上的所有单条数据库操作语句的建议索引做了统一的优化,不仅通过增加合并索引提升了数据库查询性能,也减少了单条数据库操作语句建议索引的数量,节省了索引占用的空间,提高了索引的复用率。进一步地,本申请还通过设定索引效率阈值来引导索引的合并处理,在有效减少索引建议数量的同时,也使得合并索引对数据库查询性能的提升与单条语句索引建议相当。
【附图说明】
[0011]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0012]图1示出根据本申请一个方面的一种索引处理的设备示意图;
[0013]图2示出根据本申请一个优选实施例的一种索引处理的设备示意图;
[0014]图3示出根据本申请另一个方面的一种索引处理的方法流程图;
[0015]图4示出根据本申请一个优选实施例的一种索引处理的方法流程图。
[0016]附图中相同或相似的附图标记代表相同或相似的部件。
【具体实施方式】
[0017]下面结合附图对本申请作进一步详细描述。
[0018]在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0019]内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0020]计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0021]图1示出根据本申请一个方面的一种索引处理的设备示意图。索引处理设备I包括第一装置101和第二装置102.
[0022]其中,第一装置获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;第二装置合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个所述第二索引。
[0023]具体地,索引处理设备I的第一装置101获取同一个数据库对象的多个第一索引,其中每个第一索引对应于所述数据库对象的单条数据操作记录。在此,所述多个第一索引来自于同一个数据库对象。优选地,所述多个第一索引来自于同一个数据库中的同一张表。所述第一索引对应于数据库表中的单条数据操作记录,优选地,所述单条数据操作记录,包括单条SQL查询语句,通常由DML来定义。进一步,优选地,采用根据where条件等值查询字段加入索引字段候选字段的方法建立第一索引。例如,查询时使用语句:select*fr0mtestTable where a = I,这是针对数据库表的一条查询语句,此时,可以依据所述查询语句创建一个简单的索引:Create index testTable_a ON testTable (a)。又如,若查询条件不止一个,如:select*from testTable where a = land b = 2,则依据所述查询语句创建一个多重索引:Create index testTable_a_b ON testTable (a, b)。再如,若查询条件有层级或逻辑关系时,可以将查询条件表示成树状关系,并根据树形结构给出相应的索引,如查询语句为:select*from testTable where a = land b = 2and c = 3or d = 4or e = 5,在此,可以基于运算操作符(如=,and, or)和运算操作数(如a, b, c, d, e, I, 2,3,4,5)的优先级别建立树形结构,进而得出在如下三组列上创建3条索引:(a,b,c),(d),(e),所述三条索引分别都可以满足所述查询条件。在此,进一步由于索引上每一列的区分度不同,还可以通过列的区分度的计算比较决定以该列创建索引的可选度,或者依据列的区分度的计算比较创建出索引上效率较高的列排列组合,使区分度较好的字段排列在字段组合前面,例如,上述创建的索引(a,b,c)中,若三个字段的区分度排序为b,c,a,则可以得到更为准确的索引(b,c, a)。进一步,优选地,若所述单条数据操作记录所对应的第一索引存在多个,则会选取其中索引效果最佳的第一索引作为参与到后续合并运算中的所述第一索引。
[0024]本领域技术人员应能理解,上述采用根据where条件等值查询字段加入索引字段候选字段的方法建立第一索引仅为举例,其他方法如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
[0025]接着,索引处理设备I的第二装置102合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个第一索引的至少一个索引字段可使用一个第二索弓I。所述多个第一索引均是对应于数据库表上的单条数据操作记录。即每一条第一索引服务于特定的单条数据操作记录,多数情况下,不能被其他的单条数据操作记录所用,例如,在一个数据库表上存在多条所述第一索引idxl (a, b, c, d), idx2 (a, c, d), idx3 (a, b, d),idx4 (a, d), idx5 (b, d),每一条第一索引对应于一条相应的查询语句。对所述多个第一索引进行合并算法,可以得到一条或者多条合并索引,即为第二索引,如,针对上述多个第一索引得到第二索引ind(d,a)和ind(b,d)。有时,利用一条第二索引就可以查询到所有第一索引对应的数据,有时,则需要多条第二索引才能满足覆盖所有第一索引的查询范围。在此,所得到的一个或多个第二索引要满足,每个第一索引的至少一个字段能够被一个第二索引的字段所包含。如,上述第一索引idx2(a,c, d),有三个字段,则至少有一个字段可以使用所得到的至少一个第二索引来进行查询,本例中,得到的第二索引是ind(d,a)和ind(b,d),其中ind(d,a)包含了 idx2(a,c, d)中的两个字段a和d,同样的,其他第一索引应都能够满足这一条件。此处,这一条件的限定保证了通过所生成的一个或多个第二索引能够查询到原先多个第一索引所查询的所有的数据,从而使得第二索引在性能上能与第一索引持平,使得索引合并后,以产出的2个合并索引能够完成原先5个索引所能做到的事情。
[0026]在此,索引处理设备I通过第一装置101获取统一数据库对象的多个第一索引,并通过第二装置将所述多个第一索引合并为所述数据库对象的一个或多个第二索引,从而对数据库表上的所有查询语句做了统一的优化,使得数据库表上的索引数量大大减少,以较少的合并索引完成以前较多针对单条数据库操作语句的建议索引才能完成的查询任务,减少了不必要的索引,节省了索引占用的空间,提高了索引的复用率,并通过增加合并索引提升了数据库查询性能。
[0027]在一个优选实施例中,所述索引处理设备I的第二装置102根据所述多个第一索引确定优选索引字段,并根据所述优选索引字段对所述多个第一索引中该优选索引字段所覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引;对所述多个第一索引中未被该优选索引字段覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引,直至每个第一索引的至少一个索引字段可使用一个第二索引。
[0028]具体地,通过所述索引处理设备I的第一装置101获得了同一个数据对象的多个第一索引,对所述多个第一索引进行合并运算生成第二索引首先要确定优选索引字段,再以所述优选索引字段作为所述第二索引的字段生成相应的第二索引。优选索引字段是基于已有的各个第一索引中的各个字段确定出来的,主要是先设定一定的字段选择标准对所述多个第一索引中的各个字段进行比较选择,然后通过字段判断标准对所选出的优选字段进行判断,进而确定最终的优选索引字段。例如,所述字段选择标准包括,通过对所述多个第一索引的各个字段的频次进行排序,取频次最高的字段作为优选索引字段,也包括,列出所述多个第一索引的各个字段,取字段区分度最高的字段作为优选索引字段。多种字段选择标准可以配合使用,当一种选择标准无法确定优选的索引字段时,可以引入第二种选择标准对无法确定的索引字段继续进一步选择,直至选出优选索引字段。例如,有多个第一索引cl, c2, c3, c4, c5使用选择标准A多个第一索引的各个字段进行比较,得到字段a和b都符合标准A,此时,可以引入标准B,对所述符合标准A的字段a和b再次进行比较,若判断得出字段a符合标准B,则字段a就是所述优选索引字段。进而,对于依照字段选择标准选择出的优选索引字段进行判
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1