CN105447030B - 一种索引处理方法与设备 - Google Patents
一种索引处理方法与设备 Download PDFInfo
- Publication number
- CN105447030B CN105447030B CN201410432666.4A CN201410432666A CN105447030B CN 105447030 B CN105447030 B CN 105447030B CN 201410432666 A CN201410432666 A CN 201410432666A CN 105447030 B CN105447030 B CN 105447030B
- Authority
- CN
- China
- Prior art keywords
- index
- field
- preferred
- index field
- database object
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的目的是提供一索引处理的方法与设备;获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;合并所述多个第一索引以获得所述数据库对象的一个或多个所述第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个第二索引。与现有技术相比,本申请通过将数据库表中多个针对单条数据库操作语句的建议索引合并生成合并索引,从而针对数据库表上的所有单条数据库操作语句的建议索引做了统一的优化,不仅通过增加合并索引提升了数据库查询性能,也减少了单条数据库操作语句建议索引的数量,节省了索引占用的空间,提高了索引的复用率。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种索引处理技术。
背景技术
在实际数据库查询、管理等应用中,数据库中单表数据可能十分庞大,若想从一张包含大量数据的表中查询到目标数据,往往为数据库带来过重的负载,进而影响到数据库的性能。
发明内容
本申请的目的是提供一种索引处理方法与设备。
根据本申请的一个方面,提供了一种索引处理方法,包括:
获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;
合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个所述第二索引。
根据本申请的另一方面,还提供了一种索引处理设备,包括:
第一装置,用于获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;
第二装置,用于合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个所述第二索引。
与现有技术相比,本申请通过将数据库表中多个针对单条数据库操作语句的建议索引合并生成合并索引,从而针对数据库表上的所有单条数据库操作语句的建议索引做了统一的优化,不仅通过增加合并索引提升了数据库查询性能,也减少了单条数据库操作语句建议索引的数量,节省了索引占用的空间,提高了索引的复用率。进一步地,本申请还通过设定索引效率阈值来引导索引的合并处理,在有效减少索引建议数量的同时,也使得合并索引对数据库查询性能的提升与单条语句索引建议相当。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种索引处理的设备示意图;
图2示出根据本申请一个优选实施例的一种索引处理的设备示意图;
图3示出根据本申请另一个方面的一种索引处理的方法流程图;
图4示出根据本申请一个优选实施例的一种索引处理的方法流程图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出根据本申请一个方面的一种索引处理的设备示意图。索引处理设备1包括第一装置101和第二装置102.
其中,第一装置获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;第二装置合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个所述第二索引。
具体地,索引处理设备1的第一装置101获取同一个数据库对象的多个第一索引,其中每个第一索引对应于所述数据库对象的单条数据操作记录。在此,所述多个第一索引来自于同一个数据库对象。优选地,所述多个第一索引来自于同一个数据库中的同一张表。所述第一索引对应于数据库表中的单条数据操作记录,优选地,所述单条数据操作记录,包括单条SQL查询语句,通常由DML来定义。进一步,优选地,采用根据where条件等值查询字段加入索引字段候选字段的方法建立第一索引。例如,查询时使用语句:select*fromtestTable where a=1,这是针对数据库表的一条查询语句,此时,可以依据所述查询语句创建一个简单的索引:Create index testTable_a ON testTable(a)。又如,若查询条件不止一个,如:select*from testTable where a=1and b=2,则依据所述查询语句创建一个多重索引:Create index testTable_a_b ON testTable(a,b)。再如,若查询条件有层级或逻辑关系时,可以将查询条件表示成树状关系,并根据树形结构给出相应的索引,如查询语句为:select*from testTable where a=1and b=2and c=3or d=4or e=5,在此,可以基于运算操作符(如=,and,or)和运算操作数(如a,b,c,d,e,1,2,3,4,5)的优先级别建立树形结构,进而得出在如下三组列上创建3条索引:(a,b,c),(d),(e),所述三条索引分别都可以满足所述查询条件。在此,进一步由于索引上每一列的区分度不同,还可以通过列的区分度的计算比较决定以该列创建索引的可选度,或者依据列的区分度的计算比较创建出索引上效率较高的列排列组合,使区分度较好的字段排列在字段组合前面,例如,上述创建的索引(a,b,c)中,若三个字段的区分度排序为b,c,a,则可以得到更为准确的索引(b,c,a)。进一步,优选地,若所述单条数据操作记录所对应的第一索引存在多个,则会选取其中索引效果最佳的第一索引作为参与到后续合并运算中的所述第一索引。
本领域技术人员应能理解,上述采用根据where条件等值查询字段加入索引字段候选字段的方法建立第一索引仅为举例,其他方法如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
接着,索引处理设备1的第二装置102合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个第一索引的至少一个索引字段可使用一个第二索引。所述多个第一索引均是对应于数据库表上的单条数据操作记录。即每一条第一索引服务于特定的单条数据操作记录,多数情况下,不能被其他的单条数据操作记录所用,例如,在一个数据库表上存在多条所述第一索引idx1(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个索引所能做到的事情。
在此,索引处理设备1通过第一装置101获取统一数据库对象的多个第一索引,并通过第二装置将所述多个第一索引合并为所述数据库对象的一个或多个第二索引,从而对数据库表上的所有查询语句做了统一的优化,使得数据库表上的索引数量大大减少,以较少的合并索引完成以前较多针对单条数据库操作语句的建议索引才能完成的查询任务,减少了不必要的索引,节省了索引占用的空间,提高了索引的复用率,并通过增加合并索引提升了数据库查询性能。
在一个优选实施例中,所述索引处理设备1的第二装置102根据所述多个第一索引确定优选索引字段,并根据所述优选索引字段对所述多个第一索引中该优选索引字段所覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引;对所述多个第一索引中未被该优选索引字段覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引,直至每个第一索引的至少一个索引字段可使用一个第二索引。
具体地,通过所述索引处理设备1的第一装置101获得了同一个数据对象的多个第一索引,对所述多个第一索引进行合并运算生成第二索引首先要确定优选索引字段,再以所述优选索引字段作为所述第二索引的字段生成相应的第二索引。优选索引字段是基于已有的各个第一索引中的各个字段确定出来的,主要是先设定一定的字段选择标准对所述多个第一索引中的各个字段进行比较选择,然后通过字段判断标准对所选出的优选字段进行判断,进而确定最终的优选索引字段。例如,所述字段选择标准包括,通过对所述多个第一索引的各个字段的频次进行排序,取频次最高的字段作为优选索引字段,也包括,列出所述多个第一索引的各个字段,取字段区分度最高的字段作为优选索引字段。多种字段选择标准可以配合使用,当一种选择标准无法确定优选的索引字段时,可以引入第二种选择标准对无法确定的索引字段继续进一步选择,直至选出优选索引字段。例如,有多个第一索引c1,c2,c3,c4,c5使用选择标准A多个第一索引的各个字段进行比较,得到字段a和b都符合标准A,此时,可以引入标准B,对所述符合标准A的字段a和b再次进行比较,若判断得出字段a符合标准B,则字段a就是所述优选索引字段。进而,对于依照字段选择标准选择出的优选索引字段进行判断,如设置索引效率阈值为字段判断标准,当优选索引字段超过所设定的索引效率阈值时,就判断所述优选索引字段为所要建立的第二索引所对应的字段。进一步,基于所获得的优选索引字段对其所能够覆盖的第一索引进行合并生成第二索引。例如,在上例中,若得到符合标准的优选索引字段a,且第一索引c1,c2,c3中都含有字段a,而第一索引c4,c5中不含有字段a,则说明优选索引字段a能够覆盖第一索引c1,c2,c3,进而对第一索引c1,c2,c3,进行合并处理,获得所述数据库对象的第二索引T1(a)。
接着,对所述多个第一索引中未被该优选索引字段覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引,直至每个第一索引的至少一个索引字段可使用一个第二索引。例如,在上例中,有多个第一索引c1,c2,c3,c4,c5,对于所述优选索引字段a,其能够覆盖第一索引c1,c2,c3,但是对于第一索引c4,c5,并没有被所述优选索引字段a所对应的第二索引T1(a)覆盖,所以,需要进一步对c4,c5再次进行合并运算,即通过一定的字段选择标准和字段判断标准确定出优选索引字段,再建立出相应的第二索引。最终,获得的的第二索引是一个或是多个,同时满足每个第一索引的至少一个索引字段可使用至少一个第二索引,从而使得利用原有的各个第一索引进行的查询都可以利用所述第二索引来实现。
优选地,所述索引处理设备1中根据所述多个第一索引确定优选索引字段包括:确定各索引字段在所述多个第一索引中的累计频次信息,将其中累计频次信息更高的索引字段确定为优选索引字段。
具体地,优选索引字段的确定可以通过一定的字段选择标准进行选取。在此,可以通过获取所述多个第一索引的字段频次并进行排序比较的方法确定累计频次信息更高的索引字段为优选索引字段。例如,若所述多个第一索引为r1(a,b,c,d),r2(a,c,d),r3(b,d),首先获得多个第一索引各个字段的频次排序,得到a:2,b:2,c:2,d:3,字段累计频次最高的索引字段是d,则d为所选择的优选索引字段。
更优选地,所述索引处理设备1中所述将其中累计频次信息更高的索引字段确定为优选索引字段包括:根据所述累计频次信息,以及各索引字段的区分度信息,确定所述优选索引字段。
具体地,确定优选字段时,多种字段选择标准可以配合使用,当采用累计频次信息无法更准确地确定优选索引字段时,可以引入个索引字段的区分度信息作为字段选择标准来对索引字段继续进一步进行选择,直至选出更优的优选索引字段。例如,若所述多个第一索引为s1(a,b,c,d),s2(a,c,d),s3(b,c,d),s4(b,d),s5(a,c),首先获得多个第一索引各个字段的频次排序,得到d:4,c:4,b:3,a:3,字段累计频次最高的索引字段是d和c,此时,可以引入各索引字段的区分度信息,取区分度更高的字段为所述优选索引字段。如,在上例中,字段累计频次最高的索引字段d和c,若d的字段区分度比c更高,则选取d为所述优选索引字段。
在此,更进一步,若在上例中,所述d和c的字段区分度一致,则可以取在第一索引中出现在前的字段作为优选索引字段,若是出现顺序也一致,则可以选择d和c中任一字段为所述优选字段。
优选地,所述索引处理设备1根据所述优选索引字段对所述多个第一索引中该优选索引字段所覆盖的第一索引进行合并处理包括:若所述优选索引字段所对应的索引效率超过索引效率阈值,将所述优选索引字段构成所述数据库对象的一个第二索引;否则,根据所覆盖的第一索引重新确定优选索引字段,并根据所述重新确定的优选索引字段对所述多个第一索引中所述重新确定的优选索引字段所覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引。
具体地,对于初步选择确定的所述优选索引字段需要进行一定的验证判断,以保证利用所述优选索引字段对应的第二索引能够使得索引的利用效率较高。在此,可以设定并计算出所述优选索引字段的索引效率,并且设置相应的索引效率阈值,以此作为判断所述优选索引字段是否为所述第二索引所对应的字段的验证标准。其中,所述索引效率是判断索引使用效果优劣的一种综合标准,并包含了索引字段的区分度、利用率等多种信息的一种或多种作为具体判断标准,通过多种具体判断标准的综合指数来判断所述优选索引字段的优劣,所述索引效率阈值与所述索引字段的各个具体判断标准相对应。在此设定,若所述优选索引字段的索引效率超过所设定的索引效率阈值时,则判断所述优选索引字段为所述第二索引所对应的字段,进而,可以依据所述优选索引字段建立对应的所述数据库对象的一个或多个第二索引;若所述优选索引字段的索引效率小于所设定的索引效率阈值时,则基于所述优选索引字段所覆盖的第一索引,重新确定优选索引字段,并对所述重新确定优选索引字段所能够覆盖的新的一组第一索引进行合并处理,以获取相应的所述数据库对象的一个或多个第二索引。
例如,若s1(a,b,c,d),s2(a,c,d),s3(b,c,d),s4(b,d),s5(a,c)为所述多个第一索引,依据所述累计频次信息,以及各索引字段的区分度信息,确定出所述优选索引字段为d,所述优选索引字段d能够覆盖所述多个第一索引中的s1,s2,s3,s4。进而,设定所述索引效率包括索引字段的区分度信息,并定义与此区分度信息对应的索引效率阈值为字段区分度为70%。若所述字段d的区分度超过70%,则建议基于所述优选索引字段d建立相应的第二索引u1(d);若所述字段d的区分度未超过70%,则基于所述优化索引字段d所能覆盖的第一索引重新确定优选索引字段,即,对于所述优化索引字段d所覆盖的s1(a,b,c,d),s2(a,c,d),s3(b,c,d),s4(b,d),再次基于新的累计计频次信息,确定出新的优化索引字段为(d,c),并且所述新的优化索引字段(d,c)能够覆盖第一索引s1,s2,s3。进一步,设定所述新的优化索引字段(d,c)对应的索引效率包括索引字段的区分度信息,并定义与此区分度信息对应的索引效率阈值为字段区分度为70%。若所述优化索引字段d*c的区分度超过70%,则建议基于所述优选索引字段(d,c)建立相应的第二索引u2(d,c),在此,d*c的区分度表示以d和c为一逻辑字段的该逻辑字段的区分度。
本领域技术人员应能理解,上述采用计算优选索引字段的索引效率并设置相应的索引效率阈值的方法来判断优选索引字段是否为所述第二索引对应的索引字段仅为举例,其他方法如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
更优选地,所述索引效率包括以下至少任一项:
索引字段的数量信息;
索引字段的区分度信息;
索引字段的利用率信息。
所述索引字段的数量信息指的是所确定的第二索引信息对应的优选索引字段的具体字段数,例如,若基于所述多个第一索引信息确定的优选索引字段为(a,b,c),则数量信息即为3。若所述索引效率包括所述索引字段的数量信息,则进一步设置一个相对应与所述索引字段数量信息的索引效率阈值,如,设置索引效率阈值为所述优选索引字段的数量为2个,则当优选索引字段的数量超过2时满足判断条件。上例中,所确定的优选索引字段为(a,b,c),其中字段数量为3个,超过索引效率阈值,满足验证标准,则建议基于所述优选索引字段(a,d,c)建立相应的第二索引。
所述索引字段的区分度信息的计算方法是字段区分度=该字段中所有不重复的记录数/该字段的总记录数。例如一个数据库表中的某一字段e,该字段的记录为1,2,3,1,则该字段中所有不重复的记录数为3条(即1,2,3),而总记录数为4条,进而字段区分度=3/4=75%。所述索引字段区分度越大,统一字段上对应的记录值差异性越大,其查找过滤不同信息的效果越好,通过该字段就能较好的区分各个记录,从而达到更好的索引效果。
所述索引字段的利用率信息的计算方法为字段利用率=字段频次/该数据库实体查询次数。
在此,所述索引效率是判断所述第二索引是否具有较高性能的一种综合判断标准。其中包含着多种索引字段信息,各种信息可以单独应用作为判断标准,也可以组合使用来验证优选索引字段。例如,对于所述多个第一索引信息确定的优选索引字段(a,b,c),设置索引效率包括字段的区分度信息和数量信息,并且,设置区分度信息对应的索引效率阈值为70%,设置索引字段的数量信息对应的索引效率阈值为2个,则应当依据所设定包含着两种具体判断标准的的索引效率所对应的综合的索引效率阈值来判断所述优选索引字段是否为所述第二索引对应的字段。
优选地,所述索引效率是基于所述优选索引字段中各索引字段的区分度信息与利用率信息加权确定的。
具体地,所述索引效率是评判索引效果的一个综合标准,可以包括多种关于索引字段的具体判断标准,在实际应用中,可以基于判断标准的效果对不同各个具体的判断标准设定一定的权重。通过加权运算得到对应的索引效率。在此,可以通过设置不同判断标准的权重来灵活选择所需要的判断标准。例如,对优选索引字段的各索引字段的区分度信息和利用率信息设置权重分别为A和B。因为所述多个第一索引是依据树形结构创建的,所以区分度越高,在数据库中越容易根据键值找到对应的记录,即效率越高。优选地,设定字段区分度的优先级最高。因此,A>B。对于优选索引字段,如字段a,若其对应的区分度信息和利用率信息分别为Q1和L1,则此时字段a的索引效率即为Q1*A+L1*B。又如,若对于所述优选索引字段只设定以区分度信息为标准,则此时只要在优选索引字段a的索引效率Q1*A+L1*B中设置A=1,且B=0即可。
在此,进一步,若优选索引字段对应的区分度信息和利用率信息的索引效率阈值分别设定为Q和L,则与索引效率相对应的综合的索引效率阈值为Q*A+L*B,将所述a的索引效率Q1*A+L1*B与所述索引效率阈值为Q*A+L*B进行比较,若索引效率超过所述索引效率阈值,则建议以所述优选索引字段a建立第二索引。
本领域技术人员应能理解,所述区分度信息或所述利用率信息仅为举例,若存在其他可用于确定索引效率的索引字段相关信息,也应包含在本申请的保护范围以内,并以引用方式包含于此。
图2示出根据本申请一个优选实施例的一种索引处理的设备示意图。索引处理设备1还包括第三装置203和第四装置204。以下参照图2对该优选实施例进行详细描述:具体地,索引处理设备1的第一装置201获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;第二装置202合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个所述第二索引;第三装置203获取所述数据库对象的数据操作指令;第四装置204结合所述数据操作指令所对应的第二索引,用于对所述数据库对象执行所述数据操作指令。其中,索引处理设备1的第一装置201和第二装置202与图1所示出的对应装置相同或基本相同,故此处不再赘述,并通过引用的方式包含于此。
其中,索引处理设备1的第三装置203获取所述数据库对象的数据操作指令。在通过所述索引处理设备1的第一装置201和第二装置202获得相应的一个或多个第二索引后,再次进行数据操作,获得所述数据库对象的一个新的数据操作指令,如一个数据查询指令,此数据操作指令包括与基于原先所述多个第一索引进行查询的数据查询指令相似的指令,也包括可以直接通过所述一个或多个第二索引进行查询的数据查询指令,还包括一条全新的没有对应索引的数据查询指令。例如,依据索引处理设备1的第一装置201和第二装置202,对一个数据表上的多个第一索引idx1(a,b,c,d),idx2(a,c,d),idx3(a,b,d),idx4(a,d),idx5(b,d)进行合并算法得了到第二索引ind(d,a)和ind(b,d)。随后,再次进行数据查询,获得新的数据操作指令,可以是与所述第一索引对应的查询条件相似的查询指令,如基于dx2所确定的字段a,c,d作为查询对象条件的指令;也可以是直接借助所述一个或多个第二索引,如引ind(d,a)来完成的数据操作指令;还可以是一条新的没有可利用索引的数据操作指令。
接着,索引处理设备1的第四装置204结合所述数据操作指令所对应的第二索引,用于对所述数据库对象执行所述数据操作指令。若是所接受到的新的数据操作指令能够借助原先所述多个第一索引来完成,则必然能够利用新生成的所述第二索引来进行查询;若所述数据操作指令能够被所述第二索引查询,则直接利用所述第二索引来完成;若所获得的数据操作指令没有对应的索引可以利用,则可以先生成相应的第一索引,再对所述第一索引进行合并运算生成对应的第二索引,进而结合所述第二索引进行查询。
在此,原先接受到的多个所述数据库对象的操作指令可能分别要通过不同的所述多个第一索引来进行查询,而通过本方案,对于同样多个所述数据库对象的操作指令可以只用所述一个或多个第二索引来完成,所使用到的索引数量大大减少,减少了索引占用的空间,提高了索引的利用率,同时原先多个第一索引进行查询时的整个数据库表上的索引性能并不会被影响。
优选地,所述索引处理设备1还包括第五装置(未示出)。所述第五装置根据所述数据操作指令生成对应的第一索引,并根据所述第一索引更新所述一个或多个第二索引。
具体地,作为数据库对象的第一索引在实际应用中是可以不断新增的,通过合并运算生成的第二索引具有比所述第一索引更高的索引效率,所以尽可能吸收更多的所述第一索引进行合并运算,通过对应的第二索引进行数据查询会待来更高的效率。在此,获得的数据操作指令是一条全新的指令,则先生成所述数据操作指令相对应的第一索引,再针对所增加的第一索引,更新原有的所述数据库对象的第二索引。其中,若原有的所述数据库对象的第二索引能够覆盖新增的第一索引,则不需要更新所述第二索引;若原有的所述数据库对象的第二索引无法覆盖新增的第一索引,则可以进行新的合并运算生成新的所述数据库对象的第二索引。进一步,所述新的合并运算包括:对新增的第一索引和原有的所述多个第一索引重新做合并运算。所述新的合并运算还包括:以新增的第一索引和所生成的对应于原有的所述多个第一索引的第二索引为合并对象做合并运算。在实际应用中,可以依据具体的需求选择最优选的方式进行所述数据库对象的第二索引的更新。
图3示出根据本申请另一个方面的一种索引处理的方法流程图。
其中,在步骤301中,获取关于同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;在步骤302中,合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个第一索引的至少一个索引字段可使用一个所述第二索引。
具体地,在步骤S301中,索引处理设备1获取同一个数据库对象的多个第一索引,其中每个第一索引对应于所述数据库对象的单条数据操作记录。在此,所述多个第一索引来自于同一个数据库对象。优选地,所述多个第一索引来自于同一个数据库中的同一张表。所述第一索引对应于数据库表中的单条数据操作记录,优选地,所述单条数据操作记录,包括单条SQL查询语句,通常由DML来定义。进一步,优选地,采用根据where条件等值查询字段加入索引字段候选字段的方法建立第一索引。例如,查询时使用语句:select*fromtestTable where a=1,这是针对数据库表的一条查询语句,此时,可以依据所述查询语句创建一个简单的索引:Create index testTable_a ON testTable(a)。又如,若查询条件不止一个,如:select*fromtestTable where a=1and b=2,则依据所述查询语句创建一个多重索引:Create index testTable_a_b ON testTable(a,b)。再如,若查询条件有层级或逻辑关系时,可以将查询条件表示成树状关系,并根据树形结构给出相应的索引,如查询语句为:select*from testTable where a=1and b=2and c=3or d=4or e=5,在此,可以基于运算操作符(如=,and,or)和运算操作数(如a,b,c,d,e,1,2,3,4,5)的优先级别建立树形结构,进而得出在如下三组列上创建3条索引:(a,b,c),(d),(e),所述三条索引分别都可以满足所述查询条件。在此,进一步由于索引上每一列的区分度不同,还可以通过列的区分度的计算比较决定以该列创建索引的可选度,或者依据列的区分度的计算比较创建出索引上效率较高的列排列组合,使区分度较好的字段排列在字段组合前面,例如,上述创建的索引(a,b,c)中,若三个字段的区分度排序为b,c,a,则可以得到更为准确的索引(b,c,a)。进一步,优选地,若所述单条数据操作记录所对应的第一索引存在多个,则会选取其中索引效果最佳的第一索引作为参与到后续合并运算中的所述第一索引。
本领域技术人员应能理解,上述采用根据where条件等值查询字段加入索引字段候选字段的方法建立第一索引仅为举例,其他方法如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
接着,在步骤S302中,索引处理设备1合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个第一索引的至少一个索引字段可使用一个第二索引。所述多个第一索引均是对应于数据库表上的单条数据操作记录。即每一条第一索引服务于特定的单条数据操作记录,多数情况下,不能被其他的单条数据操作记录所用,例如,在一个数据库表上存在多条所述第一索引idx1(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个索引所能做到的事情。
在此,索引处理设备1获取统一数据库对象的多个第一索引,并通过将所述多个第一索引合并为所述数据库对象的一个或多个第二索引,从而对数据库表上的所有查询语句做了统一的优化,使得数据库表上的索引数量大大减少,以较少的合并索引完成以前较多针对单条数据库操作语句的建议索引才能完成的查询任务,减少了不必要的索引,节省了索引占用的空间,提高了索引的复用率,并通过增加合并索引提升了数据库查询性能。
在一个优选实施例中,在步骤S302中,所述索引处理设备1根据所述多个第一索引确定优选索引字段,并根据所述优选索引字段对所述多个第一索引中该优选索引字段所覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引;对所述多个第一索引中未被该优选索引字段覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引,直至每个第一索引的至少一个索引字段可使用一个第二索引。
具体地,在步骤S301中,通过所述索引处理设备1获得了同一个数据对象的多个第一索引,对所述多个第一索引进行合并运算生成第二索引首先要确定优选索引字段,再以所述优选索引字段作为所述第二索引的字段生成相应的第二索引。优选索引字段是基于已有的各个第一索引中的各个字段确定出来的,主要是先设定一定的字段选择标准对所述多个第一索引中的各个字段进行比较选择,然后通过字段判断标准对所选出的优选字段进行判断,进而确定最终的优选索引字段。例如,所述字段选择标准包括,通过对所述多个第一索引的各个字段的频次进行排序,取频次最高的字段作为优选索引字段,也包括,列出所述多个第一索引的各个字段,取字段区分度最高的字段作为优选索引字段。多种字段选择标准可以配合使用,当一种选择标准无法确定优选的索引字段时,可以引入第二种选择标准对无法确定的索引字段继续进一步选择,直至选出优选索引字段。例如,有多个第一索引c1,c2,c3,c4,c5使用选择标准A多个第一索引的各个字段进行比较,得到字段a和b都符合标准A,此时,可以引入标准B,对所述符合标准A的字段a和b再次进行比较,若判断得出字段a符合标准B,则字段a就是所述优选索引字段。进而,对于依照字段选择标准选择出的优选索引字段进行判断,如设置索引效率阈值为字段判断标准,当优选索引字段超过所设定的索引效率阈值时,就判断所述优选索引字段为所要建立的第二索引所对应的字段。进一步,基于所获得的优选索引字段对其所能够覆盖的第一索引进行合并生成第二索引。例如,在上例中,若得到符合标准的优选索引字段a,且第一索引c1,c2,c3中都含有字段a,而第一索引c4,c5中不含有字段a,则说明优选索引字段a能够覆盖第一索引c1,c2,c3,进而对第一索引c1,c2,c3,进行合并处理,获得所述数据库对象的第二索引T1(a)。
接着,对所述多个第一索引中未被该优选索引字段覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引,直至每个第一索引的至少一个索引字段可使用一个第二索引。例如,在上例中,有多个第一索引c1,c2,c3,c4,c5,对于所述优选索引字段a,其能够覆盖第一索引c1,c2,c3,但是对于第一索引c4,c5,并没有被所述优选索引字段a所对应的第二索引T1(a)覆盖,所以,需要进一步对c4,c5再次进行合并运算,即通过一定的字段选择标准和字段判断标准确定出优选索引字段,再建立出相应的第二索引。最终,获得的的第二索引是一个或是多个,同时满足每个第一索引的至少一个索引字段可使用至少一个第二索引,从而使得利用原有的各个第一索引进行的查询都可以利用所述第二索引来实现。
优选地,所述索引处理设备1中根据所述多个第一索引确定优选索引字段包括:确定各索引字段在所述多个第一索引中的累计频次信息,将其中累计频次信息更高的索引字段确定为优选索引字段。
具体地,优选索引字段的确定可以通过一定的字段选择标准进行选取。在此,可以通过获取所述多个第一索引的字段频次并进行排序比较的方法确定累计频次信息更高的索引字段为优选索引字段。例如,若所述多个第一索引为r1(a,b,c,d),r2(a,c,d),r3(b,d),首先获得多个第一索引各个字段的频次排序,得到a:2,b:2,c:2,d:3,字段累计频次最高的索引字段是d,则d为所选择的优选索引字段。
更优选地,所述索引处理设备1中所述将其中累计频次信息更高的索引字段确定为优选索引字段包括:根据所述累计频次信息,以及各索引字段的区分度信息,确定所述优选索引字段。
具体地,确定优选字段时,多种字段选择标准可以配合使用,当采用累计频次信息无法更准确地确定优选索引字段时,可以引入个索引字段的区分度信息作为字段选择标准来对索引字段继续进一步进行选择,直至选出更优的优选索引字段。例如,若所述多个第一索引为s1(a,b,c,d),s2(a,c,d),s3(b,c,d),s4(b,d),s5(a,c),首先获得多个第一索引各个字段的频次排序,得到d:4,c:4,b:3,a:3,字段累计频次最高的索引字段是d和c,此时,可以引入各索引字段的区分度信息,取区分度更高的字段为所述优选索引字段。如,在上例中,字段累计频次最高的索引字段d和c,若d的字段区分度比c更高,则选取d为所述优选索引字段。
在此,更进一步,若在上例中,所述d和c的字段区分度一致,则可以取在第一索引中出现在前的字段作为优选索引字段,若是出现顺序也一致,则可以选择d和c中任一字段为所述优选字段。
优选地,所述索引处理设备1根据所述优选索引字段对所述多个第一索引中该优选索引字段所覆盖的第一索引进行合并处理包括:若所述优选索引字段所对应的索引效率超过索引效率阈值,将所述优选索引字段构成所述数据库对象的一个第二索引;否则,根据所覆盖的第一索引重新确定优选索引字段,并根据所述重新确定的优选索引字段对所述多个第一索引中所述重新确定的优选索引字段所覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引。
具体地,对于初步选择确定的所述优选索引字段需要进行一定的验证判断,以保证利用所述优选索引字段对应的第二索引能够使得索引的利用效率较高。在此,可以设定并计算出所述优选索引字段的索引效率,并且设置相应的索引效率阈值,以此作为判断所述优选索引字段是否为所述第二索引所对应的字段的验证标准。其中,所述索引效率是判断索引使用效果优劣的一种综合标准,并包含了索引字段的区分度、利用率等多种信息的一种或多种作为具体判断标准,通过多种具体判断标准的综合指数来判断所述优选索引字段的优劣,所述索引效率阈值与所述索引字段的各个具体判断标准相对应。在此设定,若所述优选索引字段的索引效率超过所设定的索引效率阈值时,则判断所述优选索引字段为所述第二索引所对应的字段,进而,可以依据所述优选索引字段建立对应的所述数据库对象的一个或多个第二索引;若所述优选索引字段的索引效率小于所设定的索引效率阈值时,则基于所述优选索引字段所覆盖的第一索引,重新确定优选索引字段,并对所述重新确定优选索引字段所能够覆盖的新的一组第一索引进行合并处理,以获取相应的所述数据库对象的一个或多个第二索引。
例如,若s1(a,b,c,d),s2(a,c,d),s3(b,c,d),s4(b,d),s5(a,c)为所述多个第一索引,依据所述累计频次信息,以及各索引字段的区分度信息,确定出所述优选索引字段为d,所述优选索引字段d能够覆盖所述多个第一索引中的s1,s2,s3,s4。进而,设定所述索引效率包括索引字段的区分度信息,并定义与此区分度信息对应的索引效率阈值为字段区分度为70%。若所述字段d的区分度超过70%,则建议基于所述优选索引字段d建立相应的第二索引u1(d);若所述字段d的区分度未超过70%,则基于所述优化索引字段d所能覆盖的第一索引重新确定优选索引字段,即,对于所述优化索引字段d所覆盖的s1(a,b,c,d),s2(a,c,d),s3(b,c,d),s4(b,d),再次基于新的累计计频次信息,确定出新的优化索引字段为(d,c),并且所述新的优化索引字段(d,c)能够覆盖第一索引s1,s2,s3。进一步,设定所述新的优化索引字段(d,c)对应的索引效率包括索引字段的区分度信息,并定义与此区分度信息对应的索引效率阈值为字段区分度为70%。若所述优化索引字段d*c的区分度超过70%,则建议基于所述优选索引字段(d,c)建立相应的第二索引u2(d,c),在此,d*c的区分度表示以d和c为一逻辑字段的该逻辑字段的区分度。
本领域技术人员应能理解,上述采用计算优选索引字段的索引效率并设置相应的索引效率阈值的方法来判断优选索引字段是否为所述第二索引对应的索引字段仅为举例,其他方法如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
更优选地,所述索引效率包括以下至少任一项:
索引字段的数量信息;
索引字段的区分度信息;
索引字段的利用率信息。
所述索引字段的数量信息指的是所确定的第二索引信息对应的优选索引字段的具体字段数,例如,若基于所述多个第一索引信息确定的优选索引字段为(a,b,c),则数量信息即为3。若所述索引效率包括所述索引字段的数量信息,则进一步设置一个相对应与所述索引字段数量信息的索引效率阈值,如,设置索引效率阈值为所述优选索引字段的数量为2个,则当优选索引字段的数量超过2时满足判断条件。上例中,所确定的优选索引字段为(a,b,c),其中字段数量为3个,超过索引效率阈值,满足验证标准,则建议基于所述优选索引字段(a,d,c)建立相应的第二索引。
所述索引字段的区分度信息的计算方法是字段区分度=该字段中所有不重复的记录数/该字段的总记录数。例如一个数据库表中的某一字段e,该字段的记录为1,2,3,1,则该字段中所有不重复的记录数为3条(即1,2,3),而总记录数为4条,进而字段区分度=3/4=75%。所述索引字段区分度越大,统一字段上对应的记录值差异性越大,其查找过滤不同信息的效果越好,通过该字段就能较好的区分各个记录,从而达到更好的索引效果。
所述索引字段的利用率信息的计算方法为字段利用率=字段频次/该数据库实体查询次数。
在此,所述索引效率是判断所述第二索引是否具有较高性能的一种综合判断标准。其中包含着多种索引字段信息,各种信息可以单独应用作为判断标准,也可以组合使用来验证优选索引字段。例如,对于所述多个第一索引信息确定的优选索引字段(a,b,c),设置索引效率包括字段的区分度信息和数量信息,并且,设置区分度信息对应的索引效率阈值为70%,设置索引字段的数量信息对应的索引效率阈值为2个,则应当依据所设定包含着两种具体判断标准的的索引效率所对应的综合的索引效率阈值来判断所述优选索引字段是否为所述第二索引对应的字段。
优选地,所述索引效率是基于所述优选索引字段中各索引字段的区分度信息与利用率信息加权确定的。
具体地,所述索引效率是评判索引效果的一个综合标准,可以包括多种关于索引字段的具体判断标准,在实际应用中,可以基于判断标准的效果对不同各个具体的判断标准设定一定的权重。通过加权运算得到对应的索引效率。在此,可以通过设置不同判断标准的权重来灵活选择所需要的判断标准。例如,对优选索引字段的各索引字段的区分度信息和利用率信息设置权重分别为A和B。因为所述多个第一索引是依据树形结构创建的,所以区分度越高,在数据库中越容易根据键值找到对应的记录,即效率越高。优选地,设定字段区分度的优先级最高。因此,A>B。对于优选索引字段,如字段a,若其对应的区分度信息和利用率信息分别为Q1和L1,则此时字段a的索引效率即为Q1*A+L1*B。又如,若对于所述优选索引字段只设定以区分度信息为标准,则此时只要在优选索引字段a的索引效率Q1*A+L1*B中设置A=1,且B=0即可。
在此,进一步,若优选索引字段对应的区分度信息和利用率信息的索引效率阈值分别设定为Q和L,则与索引效率相对应的综合的索引效率阈值为Q*A+L*B,将所述a的索引效率Q1*A+L1*B与所述索引效率阈值为Q*A+L*B进行比较,若索引效率超过所述索引效率阈值,则建议以所述优选索引字段a建立第二索引。
本领域技术人员应能理解,所述区分度信息或所述利用率信息仅为举例,若存在其他可用于确定索引效率的索引字段相关信息,也应包含在本申请的保护范围以内,并以引用方式包含于此。
图4示出根据本申请一个优选实施例的一种索引处理的方法流程图。索引处理设备1还包括步骤S403和步骤S404。以下参照图4对所述优选实施例进行详细描述:具体地,在步骤S401中,获取关于同一个数据库对象的多个第一索引,其中,每个第一索引对应于所述数据库对象的单条数据操作记录;在步骤S402中,合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个第一索引的至少一个索引字段可使用一个第二索引;在步骤S403中,获取所述数据库对象的数据操作指令;在步骤S404中,结合所述数据操作指令所对应的第二索引,用于对所述数据库对象执行所述数据操作指令。其中,步骤S401和步骤S402与图2所示出的对应装置相同或基本相同,故此处不再赘述,并通过引用的方式包含于此。
其中,在步骤403中,索引处理设备1获取所述数据库对象的数据操作指令。在通过所述索引处理设备1获得相应的一个或多个第二索引后,再次进行数据操作,获得所述数据库对象的一个新的数据操作指令,如一个数据查询指令,此数据操作指令包括与基于原先所述多个第一索引进行查询的数据查询指令相似的指令,也包括可以直接通过所述一个或多个第二索引进行查询的数据查询指令,还包括一条全新的没有对应索引的数据查询指令。例如,通过索引处理设备1对一个数据表上的多个第一索引idx1(a,b,c,d),idx2(a,c,d),idx3(a,b,d),idx4(a,d),idx5(b,d)进行合并算法得了到第二索引ind(d,a)和ind(b,d)。随后,再次进行数据查询,获得新的数据操作指令,可以是与所述第一索引对应的查询条件相似的查询指令,如基于dx2所确定的字段a,c,d作为查询对象条件的指令;也可以是直接借助所述一个或多个第二索引,如引ind(d,a)来完成的数据操作指令;还可以是一条新的没有可利用索引的数据操作指令。
接着,在步骤S404中,结合所述数据操作指令所对应的第二索引,用于对所述数据库对象执行所述数据操作指令。若是所接受到的新的数据操作指令能够借助原先所述多个第一索引来完成,则必然能够利用新生成的所述第二索引来进行查询;若所述数据操作指令能够被所述第二索引查询,则直接利用所述第二索引来完成;若所获得的数据操作指令没有对应的索引可以利用,则可以先生成相应的第一索引,再对所述第一索引进行合并运算生成对应的第二索引,进而结合所述第二索引进行查询。
在此,原先接受到的多个所述数据库对象的操作指令可能分别要通过不同的所述多个第一索引来进行查询,而通过本方案,对于同样多个所述数据库对象的操作指令可以只用所述一个或多个第二索引来完成,所使用到的索引数量大大减少,减少了索引占用的空间,提高了索引的利用率,同时原先多个第一索引进行查询时的整个数据库表上的索引性能并不会被影响。
优选地,所述方法还包括步骤S405(未示出),根据所述数据操作指令生成对应的第一索引,并根据所述第一索引更新所述一个或多个第二索引。
具体地,作为数据库对象的第一索引在实际应用中是可以不断新增的,通过合并运算生成的第二索引具有比所述第一索引更高的索引效率,所以尽可能吸收更多的所述第一索引进行合并运算,通过对应的第二索引进行数据查询会待来更高的效率。在此,获得的数据操作指令是一条全新的指令,则先生成所述数据操作指令相对应的第一索引,再针对所增加的第一索引,更新原有的所述数据库对象的第二索引。其中,若原有的所述数据库对象的第二索引能够覆盖新增的第一索引,则不需要更新所述第二索引;若原有的所述数据库对象的第二索引无法覆盖新增的第一索引,则可以进行新的合并运算生成新的所述数据库对象的第二索引。进一步,所述新的合并运算包括:对新增的第一索引和原有的所述多个第一索引重新做合并运算。所述新的合并运算还包括:以新增的第一索引和所生成的对应于原有的所述多个第一索引的第二索引为合并对象做合并运算。在实际应用中,可以依据具体的需求选择最优选的方式进行所述数据库对象的第二索引的更新。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (16)
1.一种索引处理方法,包括:
获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;
合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个所述第二索引;
其中,所述合并多个第一索引以获得所述数据库对象的一个或多个第二索引包括:
根据所述多个第一索引确定优选索引字段,并根据所述优选索引字段对所述多个第一索引中所述优选索引字段所覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引;
对所述多个第一索引中未被所述优选索引字段覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引,直至每个第一索引的至少一个索引字段可使用一个第二索引。
2.根据权利要求1所述的方法,其中,所述方法还包括:
获取所述数据库对象的数据操作指令;
结合所述数据操作指令所对应的第二索引,对所述数据库对象执行所述数据操作指令。
3.根据权利要求2所述的方法,其中,所述方法还包括:
根据所述数据操作指令生成对应的第一索引,并根据所述第一索引更新所述一个或多个第二索引。
4.根据权利要求1所述的方法,其中,根据所述优选索引字段对所述多个第一索引中所述优选索引字段所覆盖的第一索引进行合并处理包括:
若所述优选索引字段所对应的索引效率超过索引效率阈值,将所述优选索引字段构成所述数据库对象的一个第二索引;否则,
根据所覆盖的第一索引重新确定优选索引字段,并根据所述重新确定的优选索引字段对所述多个第一索引中所述重新确定的优选索引字段所覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引。
5.根据权利要求4所述的方法,其中,所述索引效率包括以下至少任一项:
索引字段的数量信息;
索引字段的区分度信息;
索引字段的利用率信息。
6.根据权利要求4所述的方法,其中,所述索引效率是基于所述优选索引字段中各索引字段的区分度信息与利用率信加权确定的。
7.根据权利要求1至6中任一项所述的方法,其中,根据所述多个第一索引确定优选索引字段包括:
确定各索引字段在所述多个第一索引中的累计频次信息,将其中累计频次信息更高的索引字段确定为优选索引字段。
8.根据权利要求7所述的方法,其中,所述将其中累计频次信息更高的索引字段确定为优选索引字段包括:
根据所述累计频次信息,以及各索引字段的区分度信息,确定所述优选索引字段。
9.一种索引处理设备,包括:
第一装置,用于获取同一个数据库对象的多个第一索引,其中,每个所述第一索引对应于所述数据库对象的单条数据操作记录;
第二装置,用于合并所述多个第一索引以获得所述数据库对象的一个或多个第二索引,其中,每个所述第一索引的至少一个索引字段可使用一个第二索引;
其中,所述第二装置用于:
根据所述多个第一索引确定优选索引字段,并根据所述优选索引字段对所述多个第一索引中所述优选索引字段所覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引;
对所述多个第一索引中未被所述优选索引字段覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引,直至每个第一索引的至少一个索引字段可使用一个第二索引。
10.根据权利要求9所述的设备,其中,所述设备还包括:
第三装置,用于获取所述数据库对象的数据操作指令;
第四装置,结合所述数据操作指令所对应的第二索引,用于对所述数据库对象执行所述数据操作指令。
11.根据权利要求10所述的设备,其中,所述设备还包括:
第五装置,用于根据所述数据操作指令生成对应的第一索引,并根据所述第一索引更新所述一个或多个第二索引。
12.根据权利要求9所述的设备,其中,根据所述优选索引字段对所述多个第一索引中所述优选索引字段所覆盖的第一索引进行合并处理包括:
若所述优选索引字段所对应的索引效率超过索引效率阈值,将所述优选索引字段构成所述数据库对象的一个第二索引;否则,
根据所覆盖的第一索引重新确定优选索引字段,并根据所述重新确定的优选索引字段对所述多个第一索引中所述重新确定的优选索引字段所覆盖的第一索引进行合并处理,以获得所述数据库对象的一个或多个第二索引。
13.根据权利要求12所述的设备,其中,所述索引效率包括以下至少任一项:
索引字段的数量信息;
索引字段的区分度信息;
索引字段的利用率信息。
14.根据权利要求12所述的设备,其中,所述索引效率是基于所述优选索引字段中各索引字段的区分度信息与利用率信息加权确定的。
15.根据权利要求9至14中任一项所述的设备,其中,根据所述多个第一索引确定优选索引字段包括:
确定各索引字段在所述多个第一索引中的累计频次信息,将其中累计频次信息更高的索引字段确定为优选索引字段。
16.根据权利要求15所述的设备,其中,所述将其中累计频次信息更高的索引字段确定为优选索引字段包括:
根据所述累计频次信息,以及各索引字段的区分度信息,确定所述优选索引字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410432666.4A CN105447030B (zh) | 2014-08-29 | 2014-08-29 | 一种索引处理方法与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410432666.4A CN105447030B (zh) | 2014-08-29 | 2014-08-29 | 一种索引处理方法与设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105447030A CN105447030A (zh) | 2016-03-30 |
CN105447030B true CN105447030B (zh) | 2019-06-11 |
Family
ID=55557222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410432666.4A Active CN105447030B (zh) | 2014-08-29 | 2014-08-29 | 一种索引处理方法与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105447030B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562762B (zh) * | 2016-07-01 | 2020-10-27 | 中国联合网络通信集团有限公司 | 数据索引构建方法及装置 |
CN108664481B (zh) * | 2017-03-27 | 2021-03-23 | 中国移动通信集团内蒙古有限公司 | 一种数据检索方法及服务器 |
CN110909014A (zh) * | 2018-09-14 | 2020-03-24 | 阿里巴巴集团控股有限公司 | 优化建议生成及数据库查询方法、装置、设备及存储介质 |
CN109887456A (zh) * | 2019-01-17 | 2019-06-14 | 硅谷数模半导体(北京)有限公司 | 数据压缩方法及装置 |
CN109871463B (zh) * | 2019-03-06 | 2024-04-09 | 腾讯音乐娱乐科技(深圳)有限公司 | 音频处理方法、装置、电子设备及存储介质 |
CN110347683B (zh) * | 2019-06-27 | 2022-04-12 | 北京明略软件系统有限公司 | 一种数据表合并处理方法及装置 |
CN112559554B (zh) * | 2020-12-24 | 2024-01-26 | 北京百家科技集团有限公司 | 一种查询语句优化方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1979469A (zh) * | 2005-11-29 | 2007-06-13 | 国际商业机器公司 | 索引及其扩展和查询方法 |
CN101639851A (zh) * | 2009-08-03 | 2010-02-03 | 北京高森明晨信息科技有限公司 | 一种数据存储、查询的方法和装置 |
CN103390066A (zh) * | 2013-08-08 | 2013-11-13 | 上海新炬网络技术有限公司 | 一种数据库全局性自动化优化预警装置及其处理方法 |
CN103810212A (zh) * | 2012-11-14 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 一种数据库索引的自动创建方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070118574A1 (en) * | 2005-11-22 | 2007-05-24 | Franklin William J | Reorganizing data with update activity |
-
2014
- 2014-08-29 CN CN201410432666.4A patent/CN105447030B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1979469A (zh) * | 2005-11-29 | 2007-06-13 | 国际商业机器公司 | 索引及其扩展和查询方法 |
CN101639851A (zh) * | 2009-08-03 | 2010-02-03 | 北京高森明晨信息科技有限公司 | 一种数据存储、查询的方法和装置 |
CN103810212A (zh) * | 2012-11-14 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 一种数据库索引的自动创建方法及系统 |
CN103390066A (zh) * | 2013-08-08 | 2013-11-13 | 上海新炬网络技术有限公司 | 一种数据库全局性自动化优化预警装置及其处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105447030A (zh) | 2016-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105447030B (zh) | 一种索引处理方法与设备 | |
CN107644286A (zh) | 工作流处理方法及装置 | |
CN107957957A (zh) | 测试用例的获取方法和装置 | |
CN105630475B (zh) | 一种数据标签组织系统及组织方法 | |
CN105488068A (zh) | 搜索音乐和建立索引的方法及装置、搜索结果判断方法 | |
CN106407303A (zh) | 数据存储、查询方法及装置 | |
CN110134668A (zh) | 应用于区块链的数据迁移方法、装置和设备 | |
CN110245279A (zh) | 依赖树生成方法、装置、设备及存储介质 | |
CN105868421A (zh) | 一种数据管理方法及装置 | |
CN105095237A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
US10031936B2 (en) | Database table data fabrication | |
CN110059264A (zh) | 基于知识图谱的地点检索方法、设备及计算机存储介质 | |
KR20190079354A (ko) | 분할 공간 기반의 공간 데이터 객체 질의처리장치 및 방법, 이를 기록한 기록매체 | |
CN103714086A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN109325055A (zh) | 业务关联数据表的筛选及核对方法、装置、电子设备 | |
CN105204920A (zh) | 一种基于映射聚合的分布式计算作业的实现方法及装置 | |
CN107451204B (zh) | 一种数据查询方法、装置及设备 | |
CN104408183B (zh) | 数据系统的数据导入方法和装置 | |
CN110245978A (zh) | 策略组中的策略评估、策略选择方法及装置 | |
CN110362569A (zh) | 数据表的校验方法及装置、电子设备、存储介质 | |
CN107220265A (zh) | 一种数据库语句编译和执行方法及装置 | |
CN108804625A (zh) | 一种lsm树的优化方法、装置及计算机设备 | |
KR20220099745A (ko) | 지리공간 블록체인 데이터 검색을 위한 공간 분할 기반의 트리 인덱싱 및 질의어 처리 방법 및 장치 | |
JP5776403B2 (ja) | 領域検索方法、領域検索プログラムおよび情報処理装置 | |
US20120078943A1 (en) | High quantitative pattern searching using spatial indexing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |