CN110750555A - 用于生成索引的方法、装置、计算设备以及介质 - Google Patents
用于生成索引的方法、装置、计算设备以及介质 Download PDFInfo
- Publication number
- CN110750555A CN110750555A CN201911010711.6A CN201911010711A CN110750555A CN 110750555 A CN110750555 A CN 110750555A CN 201911010711 A CN201911010711 A CN 201911010711A CN 110750555 A CN110750555 A CN 110750555A
- Authority
- CN
- China
- Prior art keywords
- target
- fields
- field
- query statement
- current
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000001914 filtration Methods 0.000 claims abstract description 87
- 239000012634 fragment Substances 0.000 claims description 16
- 238000013467 fragmentation Methods 0.000 claims description 12
- 238000006062 fragmentation reaction Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 10
- 238000012163 sequencing technique Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 26
- 238000004590 computer program Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- ONUFESLQCSAYKA-UHFFFAOYSA-N iprodione Chemical compound O=C1N(C(=O)NC(C)C)CC(=O)N1C1=CC(Cl)=CC(Cl)=C1 ONUFESLQCSAYKA-UHFFFAOYSA-N 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000005507 spraying Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种用于生成索引的方法,包括:获取目标查询语句,处理目标查询语句,得到多个目标字段,确定多个目标字段中每个目标字段的目标权重,其中,目标权重表征目标字段在与目标查询语句对应的数据表中的过滤能力,过滤能力与目标字段在数据表中具有的字段值的个数相关联,基于多个目标字段中每个目标字段的目标权重,对多个目标字段进行排序处理得到目标索引结果,关联目标索引结果和目标查询语句。本公开还提供了一种用于生成索引的装置、计算设备以及计算机可读存储介质。
Description
技术领域
本公开涉及计算机技术领域,特别是涉及一种用于生成索引的方法、一种用于生成索引的装置、一种计算设备以及一种计算机可读存储介质。
背景技术
索引是对数据库表中一列或多列的值进行排序的一种结构,数据库索引好比是一本书的目录,能加快数据的查询速度。从数据搜索实现的角度来看,索引也是另外一类文件/记录,它包含着可以指示出相关数据的各种记录。其中,每一索引都有一个相对应的搜索码,字符段的任意一个子集都能够形成一个搜索码。通过索引能够快速查询数据库表中的相关数据。
随着互联网时代的到来,金融业务场景存在井喷式的爆发。业务场景中的数据查询方式不再拘泥于单一的一种或两种查询条件。在开发阶段,新的业务场景通常需要使用新的查询逻辑,而根据旧有查询逻辑创建的索引不足以满足新场景的需求。因此,需要根据查询逻辑的变化实时调整存量的索引,以确保查询的效率。
在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题。传统的索引调整和性能调优需要通过开发耗时扫描代码来寻找全量的SQL(Structured QueryLanguage)语句,并由专业的数据库管理员分析SQL语句的合理性,梳理可匹配索引的字段。例如,需要根据开发规范、业务特点、后续的业务发展方向、存量SQL的查询方式调整索引,该过程极为耗费人力和时间。因此,需要一种便捷有效的方式生成可用的索引建议。
发明内容
本公开的一个方面提供了一种用于生成索引的方法,包括:获取目标查询语句,处理所述目标查询语句,得到多个目标字段,确定所述多个目标字段中每个目标字段的目标权重,其中,所述目标权重表征所述目标字段在与所述目标查询语句对应的数据表中的过滤能力,所述过滤能力与所述目标字段在所述数据表中具有的字段值的个数相关联,基于所述多个目标字段中每个目标字段的目标权重,对所述多个目标字段进行排序处理得到目标索引结果,关联所述目标索引结果和所述目标查询语句。
根据本公开实施例,上述确定所述多个目标字段中每个目标字段的目标权重包括:将所述多个目标字段分为可匹配字段和范围匹配字段,其中,所述可匹配字段和所述范围匹配字段对应不同的权重系数,根据所述多个目标字段在所述数据表中的过滤能力,将所述多个目标字段分为均匀匹配字段、高过滤字段、低过滤字段,基于所述多个目标字段中包括均匀匹配字段、高过滤字段或者低过滤字段,确定所述多个目标字段的积分分值,基于所述权重系数和所述积分分值,计算所述多个目标字段中每个目标字段的目标权重。
根据本公开实施例,上述基于所述多个目标字段中包括均匀匹配字段、高过滤字段或者低过滤字段,确定所述多个目标字段的积分分值包括:在所述多个目标字段仅包括高过滤字段的情况下,确定所述多个目标字段均分第一总积分得到每个目标字段的积分分值,在所述目标查询语句的多个目标字段仅包括均匀匹配字段的情况下,确定所述多个目标字段均分第二总积分得到每个目标字段的积分分值,在所述目标查询语句的多个目标字段包括高过滤字段和均匀匹配字段的情况下,确定所述多个目标字段中的高过滤字段均分第三总积分得到每个目标字段的积分分值。
根据本公开实施例,上述基于所述多个目标字段中每个目标字段的目标权重,对所述多个目标字段进行排序处理得到目标索引结果包括:在所述多个目标字段包括分片字段的情况下,确定所述分片字段为所述目标索引结果的第一字段,其中,所述分片字段用于将所述数据表分为多个子数据表,将所述多个目标字段中除所述分片字段之外的目标字段按照目标权重的数值大小添加至所述目标索引结果中,直至所述目标索引结果中的至少一个目标字段满足第一预设条件,其中,所述满足第一预设条件包括所述目标索引结果中的至少一个目标字段的过滤率与所述数据表中的记录数量的乘积小于第一阈值。
根据本公开实施例,上述基于所述多个目标字段中每个目标字段的目标权重,对所述多个目标字段进行排序处理得到目标索引结果包括:在所述多个目标字段不包括所述分片字段的情况下,将所述多个目标字段按照目标权重的数值大小添加至所述目标索引结果中,直至所述目标索引结果中的至少一个目标字段满足所述第一预设条件。
根据本公开实施例,上述方法还包括:获取当前查询语句,确定所述目标索引结果与所述当前查询语句中的多个当前字段是否满足第二预设条件,响应于确定所述目标索引结果与所述当前查询语句中的多个当前字段满足第二预设条件,关联所述目标索引结果和所述当前查询语句,响应于确定所述目标索引结果与所述当前查询语句中的多个当前字段不满足第二预设条件,对所述多个当前字段进行排序处理得到当前索引结果,并关联所述当前索引结果和所述当前查询语句。
根据本公开实施例,上述确定所述目标索引结果与所述当前查询语句中的多个当前字段是否满足第二预设条件包括:依次确定所述目标索引结果中的目标字段是否为可匹配字段,直至目标字段不是可匹配字段,得到所述目标索引结果中的第一数量个可匹配字段,计算所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积,如果所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积小于第二阈值,确定所述目标索引结果与所述当前查询语句中的多个当前字段满足所述第二预设条件,如果所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积大于或等于所述第二阈值并且所述当前查询语句中的多个当前字段中除所述第一数量个可匹配字段之外的当前字段不包括高过滤字段或者均匀匹配字段,确定所述目标索引结果与所述当前查询语句中的多个当前字段满足所述第二预设条件,如果所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积大于或等于所述第二阈值并且所述当前查询语句中的多个当前字段中除所述第一数量个可匹配字段之外的当前字段包括高过滤字段或者均匀匹配字段,确定所述目标索引结果与所述当前查询语句中的多个当前字段不满足所述第二预设条件。
本公开的另一个方面提供了一种用于生成索引的装置,包括:第一获取模块、第一处理模块、第一确定模块、第二处理模块以及第一关联模块。其中,第一获取模块,获取目标查询语句。第一处理模块,处理所述目标查询语句,得到多个目标字段。第一确定模块,确定所述多个目标字段中每个目标字段的目标权重,其中,所述目标权重表征所述目标字段在与所述目标查询语句对应的数据表中的过滤能力,所述过滤能力与所述目标字段在所述数据表中具有的字段值的个数相关联。第二处理模块,基于所述多个目标字段中每个目标字段的目标权重,对所述多个目标字段进行排序处理得到目标索引结果。第一关联模块,关联所述目标索引结果和所述目标查询语句。
根据本公开实施例,上述第一确定模块包括:第一划分子模块、第二划分子模块、第一确定子模块以及第一计算子模块。其中,第一划分子模块,将所述多个目标字段分为可匹配字段和范围匹配字段,其中,所述可匹配字段和所述范围匹配字段对应不同的权重系数。第二划分子模块,根据所述多个目标字段在所述数据表中的过滤能力,将所述多个目标字段分为均匀匹配字段、高过滤字段、低过滤字段。第一确定子模块,基于所述多个目标字段中包括均匀匹配字段、高过滤字段或者低过滤字段,确定所述多个目标字段的积分分值。第一计算子模块,基于所述权重系数和所述积分分值,计算所述多个目标字段中每个目标字段的目标权重。
根据本公开实施例,上述基于所述多个目标字段中包括均匀匹配字段、高过滤字段或者低过滤字段,确定所述多个目标字段的积分分值包括:在所述多个目标字段仅包括高过滤字段的情况下,确定所述多个目标字段均分第一总积分得到每个目标字段的积分分值,在所述目标查询语句的多个目标字段仅包括均匀匹配字段的情况下,确定所述多个目标字段均分第二总积分得到每个目标字段的积分分值,在所述目标查询语句的多个目标字段包括高过滤字段和均匀匹配字段的情况下,确定所述多个目标字段中的高过滤字段均分第三总积分得到每个目标字段的积分分值。
根据本公开实施例,上述第二处理模块包括:第二确定子模块以及第一添加子模块。其中,第二确定子模块,在所述多个目标字段包括分片字段的情况下,确定所述分片字段为所述目标索引结果的第一字段,其中,所述分片字段用于将所述数据表分为多个子数据表。第一添加子模块,将所述多个目标字段中除所述分片字段之外的目标字段按照目标权重的数值大小添加至所述目标索引结果中,直至所述目标索引结果中的至少一个目标字段满足第一预设条件,其中,所述满足第一预设条件包括所述目标索引结果中的至少一个目标字段的过滤率与所述数据表中的记录数量的乘积小于第一阈值。
根据本公开实施例,上述第二处理模块还包括:第二添加子模块,在所述多个目标字段不包括所述分片字段的情况下,将所述多个目标字段按照目标权重的数值大小添加至所述目标索引结果中,直至所述目标索引结果中的至少一个目标字段满足所述第一预设条件。
根据本公开实施例,上述装置还包括:第二获取模块、第二确定模块、第二关联模块以及第三处理模块。其中,第二获取模块,获取当前查询语句。第二确定模块,确定所述目标索引结果与所述当前查询语句中的多个当前字段是否满足第二预设条件。第二关联模块,响应于确定所述目标索引结果与所述当前查询语句中的多个当前字段满足第二预设条件,关联所述目标索引结果和所述当前查询语句。第三处理模块,响应于确定所述目标索引结果与所述当前查询语句中的多个当前字段不满足第二预设条件,对所述多个当前字段进行排序处理得到当前索引结果,并关联所述当前索引结果和所述当前查询语句。
根据本公开实施例,上述第二确定模块包括:第三确定子模块、第二计算子模块、第四确定子模块、第五确定子模块以及第六确定子模块。其中,第三确定子模块,依次确定所述目标索引结果中的目标字段是否为可匹配字段,直至目标字段不是可匹配字段,得到所述目标索引结果中的第一数量个可匹配字段。第二计算子模块,计算所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积。第四确定子模块,如果所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积小于第二阈值,确定所述目标索引结果与所述当前查询语句中的多个当前字段满足所述第二预设条件。第五确定子模块,如果所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积大于或等于所述第二阈值并且所述当前查询语句中的多个当前字段中除所述第一数量个可匹配字段之外的当前字段不包括高过滤字段或者均匀匹配字段,确定所述目标索引结果与所述当前查询语句中的多个当前字段满足所述第二预设条件。第六确定子模块,如果所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积大于或等于所述第二阈值并且所述当前查询语句中的多个当前字段中除所述第一数量个可匹配字段之外的当前字段包括高过滤字段或者均匀匹配字段,确定所述目标索引结果与所述当前查询语句中的多个当前字段不满足所述第二预设条件。
本公开的另一方面提供了一种计算设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
本公开的另一方面提供了一种非易失性可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的用于生成索引的方法和用于生成索引的装置的***架构;
图2示意性示出了根据本公开实施例的用于生成索引的方法的流程图;
图3示意性示出了根据本公开实施例的确定目标权重的流程图;
图4示意性示出了根据本公开实施例的排序处理的流程图;
图5示意性示出了根据本公开另一实施例的用于生成索引的方法的流程图;
图6示意性示出了根据本公开实施例的判断当前字段是否满足第二预设条件的流程图;
图7示意性示出了根据本公开实施例的用于生成索引的装置的框图;
图8示意性示出了根据本公开实施例的第一确定模块的框图;
图9示意性示出了根据本公开实施例的第二处理模块的框图;
图10示意性示出了根据本公开另一实施例的用于生成索引的装置的框图;
图11示意性示出了根据本公开实施例的第二确定模块的框图;以及
图12示意性示出了根据本公开实施例的用于实现用于生成索引的计算机***的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的***”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的***等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程控制装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行***使用或者结合指令执行***使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体***、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
本公开的实施例提供了一种用于生成索引的方法,包括:获取目标查询语句,处理目标查询语句,得到多个目标字段。然后,确定多个目标字段中每个目标字段的目标权重,其中,目标权重表征目标字段在与目标查询语句对应的数据表中的过滤能力,过滤能力与目标字段在数据表中具有的字段值的个数相关联。最后,基于多个目标字段中每个目标字段的目标权重,对多个目标字段进行排序处理得到目标索引结果,并关联目标索引结果和目标查询语句。
图1示意性示出了根据本公开实施例的用于生成索引的方法和用于生成索引的装置的***架构。需要注意的是,图1所示仅为可以应用本公开实施例的***架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、***、环境或场景。
如图1所示,根据该实施例的***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的用于生成索引的方法一般可以由服务器105执行。相应地,本公开实施例所提供的用于生成索引的装置一般可以设置于服务器105中。本公开实施例所提供的用于生成索引的方法也可以由不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的用于生成索引的装置也可以设置于不同于服务器105且能够与终端设备101、102、103和/或服务器105通信的服务器或服务器集群中。
例如,本公开实施例的目标查询语句可以存储在终端设备101、102、103中,通过终端设备101、102、103将目标查询语句发送至服务器105中,服务器105可以处理目标查询语句,得到多个目标字段以及每个目标字段的目标权重,并对多个目标字段进行排序处理得到目标索引结果以及关联目标索引结果和目标查询语句。另外,目标查询语句还可以由服务器105接收并直接存储在服务器105中,由服务器105直接处理目标查询语句,得到多个目标字段以及每个目标字段的目标权重,并对多个目标字段进行排序处理得到目标索引结果以及关联目标索引结果和目标查询语句。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面结合图1的***架构,参考图2~图6来描述根据本公开示例性实施方式的用于生成索引的方法。需要注意的是,上述***架构仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
图2示意性示出了根据本公开实施例的用于生成索引的方法的流程图。
如图2所示,该方法可以包括操作S210~S250。
在操作S210,获取目标查询语句。
根据本公开实施例,数据库中例如包括多个数据表,每个数据表对应有多个查询语句,数据库例如可以是DB2数据库,DB2数据库是一种大型关系型数据库平台。例如,多个数据表包括数据表A和数据表B,数据表A例如对应有查询语句a、b、c等等,根据查询语句a、b、c能够从数据表A中查询到相关数据。数据表B例如对应有查询语句d、e等等,根据查询语句d、e能够从数据表B中查询到相关数据。其中,查询语句a、b、c、d、e例如为SQL语句,SQL语句例如包括已发布的SQL语句以及开发录入即将发布的SQL语句。
其中,目标查询语句例如可以是a、b、c、d、e等中的任意一个。为了便于理解,例如以目标查询语句为a举例。
在操作S220,处理目标查询语句,得到多个目标字段。
例如,选择目标查询语句a中的条件区域,去除条件区域内的不可匹配字段后剩余的多个字段为目标字段。其中,条件区域例如可以是目标查询语句a中where和order by之间的部分,或者where和group by之间的部分。其中,条件区域内的不可匹配字段例如包括与or逻辑判断符连接的字段、函数内的字段或者括号内的字段等等。目标查询语句a中的多个目标字段例如包括字段a1、a2、……、an。
在操作S230,确定多个目标字段中每个目标字段的目标权重,其中,目标权重表征目标字段在与目标查询语句对应的数据表中的过滤能力,过滤能力与目标字段在数据表中具有的字段值的个数相关联。
例如,多个目标字段a1、a2、……、an中的每个字段例如具有对应的目标权重。例如,以目标字段a1为“性别”举例,该“性别”字段的权重表征该“性别”字段在数据表A中的过滤能力。其中,该“性别”字段在数据表A中具有的字段值例如为“男性”和“女性”,即字段值的个数为2。其中,例如字段值的个数越多,过滤能力越小。换言之,过滤能力例如可以等于字段值的个数的倒数。例如,“性别”字段的过滤能力为1/2。其中,确定目标权重的具体过程例如参考图3描述。
在操作S240,基于多个目标字段中每个目标字段的目标权重,对多个目标字段进行排序处理得到目标索引结果。
根据本公开实施例,例如可以根据每个目标字段的目标权重的大小,将多个目标字段进行排序。例如多个目标字段的目标权重从大至小依次为a3的目标权重、a1的目标权重、a2的目标权重、……,对多个目标字段进行排序处理得到目标索引结果例如为a3、a1、a2、……。
在操作S250,关联目标索引结果和目标查询语句。例如,可以推荐目标索引a3、a1、a2、……作为目标查询语句a的索引名,并将索引名与目标查询语句a关联,便于在后续应用时通过索引名快速找到相应的目标查询语句。
本公开实施例通过自动解析查询语句得到多个目标字段,并对多个目标字段进行排序处理以自动生成与查询语句对应的索引结果,以将索引结果推荐给用户,以便关联索引结果与查询语句。
图3示意性示出了根据本公开实施例的确定目标权重的流程图。
如图3所示,操作S230可以包括操作S231~S234。
在操作S231,将多个目标字段分为可匹配字段和范围匹配字段,其中,可匹配字段和范围匹配字段对应不同的权重系数。
例如,根据DB2的匹配规则,针对多个目标字段,在“=”、“in”等字符之前的字段可作为可匹配字段。在“>”、“>=”、“<”、“<=”、“<>”、“between”等字符之前的字段可作为范围匹配字段。
例如,目标查询语句a中的多个目标字段包括字段a1、a2、a3、……,其中,a3例如为可匹配字段,权重系数例如为k1,k1例如为10。a1、a2例如为范围匹配字段,权重系数例如为k2,k2例如为1。
在操作S232,根据多个目标字段在数据表中的过滤能力,将多个目标字段分为均匀匹配字段、高过滤字段、低过滤字段。
根据本公开实施例,首先引入多个概念:字段值的个数q1、表数据量q2、数量最大的字段值的个数q3。
例如,以数据表A举例,与数据表A对应的查询语句例如包括目标查询语句a。以目标查询语句a中的目标字段a1为“性别”举例。该“性别”字段在数据表A中具有的字段值例如为“男性”和“女性”,即字段值的个数q1为2。该数据表A的表数据量q2例如为表中的记录条数,例如表数据量q2为10000。其中,关于“男性”的记录条数例如为6000,关于女性”的记录条数例如为4000,则数量最大的字段值的个数q3例如为6000。
则针对目标字段a1,字段数据量均值例如为Q1=1/(q1*q2),字段过滤能力例如为Q2=1/q1,字段偏离度例如为Q3=q3/Q1。同理,可以得到其他目标字段a2、a3、……中的每个目标字段的Q1、Q2、Q3的值。
例如,针对目标查询语句a中的每个目标字段,如果目标字段的1%<Q2<50%且Q3<100%,则该目标字段为均匀匹配字段。如果目标字段的Q2≤1%,则该目标字段为高过滤字段。如果目标字段的Q2≥50%且Q3<100%,则该目标字段为低过滤字段。如果目标字段的Q2>1%且Q3≥100%,则该目标字段为高偏移字段。可以通过开发人员根据具体分析将高偏移字段确认为均匀匹配字段、高过滤字段或者低过滤字段。
在操作S233,基于多个目标字段中包括均匀匹配字段、高过滤字段或者低过滤字段,确定多个目标字段的积分分值。
例如,在多个目标字段仅包括高过滤字段的情况下,确定多个目标字段均分第一总积分得到每个目标字段的积分分值。
其中,第一总积分例如可以为500分。以目标查询语句a包括多个目标字段a1、a2、a3举例,如果多个目标字段a1、a2、a3均为高过滤字段,则该多个目标字段a1、a2、a3均分500分。此时,目标字段a1的积分分值为500/3,目标字段a2的积分分值为500/3,目标字段a3的积分分值为500/3。
或者,在目标查询语句的多个目标字段仅包括均匀匹配字段的情况下,确定多个目标字段均分第二总积分得到每个目标字段的积分分值。
其中,第二总积分例如可以为100分。以目标查询语句a包括多个目标字段a1、a2、a3举例,如果多个目标字段a1、a2、a3均为均匀匹配字段,则该多个目标字段a1、a2、a3均分100分。此时,目标字段a1的积分分值为100/3,目标字段a2的积分分值为100/3,目标字段a3的积分分值为100/3。
或者,在目标查询语句的多个目标字段包括高过滤字段和均匀匹配字段的情况下,确定多个目标字段中的高过滤字段均分第三总积分得到每个目标字段的积分分值。
其中,第三总积分例如可以为300分。以目标查询语句a包括多个目标字段a1、a2、a3举例,如果多个目标字段a1为均匀匹配字段,a2、a3为高过滤字段,则高过滤字段a2、a3均分300分。此时,目标字段a1的积分分值为0,目标字段a2的积分分值为150,目标字段a3的积分分值为150。
在操作S234,基于权重系数和积分分值,计算多个目标字段中每个目标字段的目标权重。
根据本公开实施例,目标查询语句a中的a3例如为可匹配字段,权重系数例如为k1,k1例如为10。a1、a2例如为范围匹配字段,权重系数例如为k2,k2例如为1。a1的目标权重例如为k2乘以积分分值,a2的目标权重例如为k2乘以积分分值,a3的目标权重例如为k1乘以积分分值。
图4示意性示出了根据本公开实施例的排序处理的流程图。
如图4所示,操作S240例如可以包括操作S241~S243。
在操作S241,在多个目标字段包括分片字段的情况下,确定分片字段为目标索引结果的第一字段,其中,分片字段用于将数据表分为多个子数据表。例如,分片字段为“地区”,根据分片字段将数据表分为多个子数据表,例如子数据表1中的用户数据为北京地区的用户数据,子数据表2中的用户数据为上海地区的用户数据等等。
例如,以目标查询语句a包括多个目标字段a1、a2、a3、a4、……举例,如果目标字段a4为分片字段,则目标字段a4为排列在第一位的第一字段。
在操作S242,将多个目标字段中除分片字段之外的目标字段按照目标权重的数值大小添加至目标索引结果中,直至目标索引结果中的至少一个目标字段满足第一预设条件。
例如,除分片字段a4之外的目标字段例如包括a1、a2、a3、a5、……,将a1、a2、a3、a5、……中的字段按照目标权重的数值大小添加至目标索引结果中,例如目标权重的数值大小依次为a3、a1、a2、……,则将a3、a1、a2、……依次添加至目标索引结果中,直至目标索引结果中的至少一个目标字段满足第一预设条件,满足第一预设条件包括目标索引结果中的至少一个目标字段的过滤率与数据表中的记录数量的乘积小于第一阈值。
例如,第一阈值为1。其中,每个目标字段的过滤率的计算方式例如与图3所示的过滤能力的计算方式相同或类似,在此不再赘述。数据表A中的记录数量例如与图3所示的表数据量q2的计算方式相同或类似,在此不再赘述。例如,将a3、a1、a2、……依次添加至目标索引结果中,直到目标字段a4、a3、a1、a2、a5、a6中各字段的过滤率与数据表A的记录数量的乘积小于1时,停止添加目标字段至目标索引结果中。最终得到的目标索引结果例如为a4、a3、a1、a2、a5、a6。
在操作S243,在多个目标字段不包括分片字段的情况下,将多个目标字段按照目标权重的数值大小添加至目标索引结果中,直至目标索引结果中的至少一个目标字段满足第一预设条件。
例如目标权重的数值大小依次为a3、a1、a2、a4、a5、a6、……,则将a3、a1、a2、a4、a5、a6、……依次添加至目标索引结果,例如直到目标字段a3、a1、a2、a4、a5、a6中各字段的过滤率与数据表A中的记录数量的乘积小于1时,停止添加目标字段至目标索引结果中,最终得到的目标索引结果例如为a3、a1、a2、a4、a5、a6。
图5示意性示出了根据本公开另一实施例的用于生成索引的方法的流程图。
如图5所示,该方法例如可以包括操作S210~S250以及操作S510~S540。其中,操作S210~S250与图2描述的操作相同或类似,在此不再赘述。
在操作S510,获取当前查询语句。
其中,以目标索引结果为S1(S1例如为a3、a1、a2、a4、a5、a6)举例。其中,可以从查询语句a、b、c、d、e等中依次确定当前查询语句。其中,查询语句a、b、c例如对应数据表A。查询语句d、e例如对应数据表B。
在操作S520,确定目标索引结果与当前查询语句中的多个当前字段是否满足第二预设条件。例如,在当前查询语句为a时,当前查询语句a的多个当前字段例如包括a1、a2、a3、……,确定目标索引结果S1与多个当前字段a1、a2、a3是否满足第二预设条件。或者,在当前查询语句为b时,当前查询语句b的多个当前字段例如包括b1、b2、b3、……,确定目标索引结果S1与多个当前字段b1、b2、b3是否满足第二预设条件。其中,确定当前字段是否满足第二预设条件的具体过程例如如以下图6所示。
在操作S530,响应于确定目标索引结果与当前查询语句中的多个当前字段满足第二预设条件,关联目标索引结果和当前查询语句。
例如确定的当前查询语句为a,由于目标索引结果为S1为基于查询语句a获取的索引结果,因此,目标索引结果S1与查询语句a的多个当前字段满足第二预设条件,关联目标索引结果S1和当前查询语句a。
以当前查询语句为b举例,如果目标索引结果为S1与查询语句b的多个当前字段b1、b2、b3、……满足第二预设条件,则表示查询语句b与查询语句a相似度较高,则可以将基于查询语句a获取的目标索引结果S1作为当前查询语句b的索引名,并关联当前索引结果S1和当前查询语句b。
在操作S540,响应于确定目标索引结果与当前查询语句中的多个当前字段不满足第二预设条件,对多个当前字段进行排序处理得到当前索引结果,并关联当前索引结果和当前查询语句。
或者,如果确定的当前查询语句为b,在目标索引结果S1与查询语句b的多个当前字段b1、b2、b3、……不满足第二预设条件时,则表示查询语句b与查询语句a相似度较低,如果将基于查询语句a获取的目标索引结果S1作为查询语句b的索引名,则导致查询语句b的索引名不准确,因此需要基于查询语句b重新获取新的索引结果S2作为查询语句b的索引名,并关联当前索引结果S1和当前查询语句b。其中,基于查询语句b重新获取新的索引结果S2的具体过程与基于查询语句a获取目标索引结果S1的过程相同或类似,在此不再赘述。
在依次确定当前查询语句为a和b之后,进一步确定当前查询语句为c,如果目标索引结果S1与查询语句c的多个当前字段c1、c2、c3、……满足第二预设条件,则表示查询语句c与查询语句a相似度较高,则可以将基于查询语句a获取的目标索引结果S1作为当前查询语句c的索引名,并关联当前索引结果S1和当前查询语句c。如果目标索引结果S1与查询语句c的多个当前字段c1、c2、c3、……不满足第二预设条件,则继续确定索引结果S2与查询语句c的多个当前字段c1、c2、c3、……是否满足第二预设条件,如果满足则将索引结果S2作为当前查询语句c的索引名,并关联当前索引结果S2和当前查询语句c,如果不满足则基于查询语句c重新获取新的索引结果S3,具体过程与基于查询语句a获取目标索引结果S1的过程相同或类似,在此不再赘述。
图6示意性示出了根据本公开实施例的判断当前字段是否满足第二预设条件的流程图。
如图6所示,操作S520可以包括操作S521~S525。
例如,以当前查询语句为b举例,当前查询语句b中的多个当前字段例如包括b1、b2、b3、a3、a1、a2、……,与查询语句b对应的数据表为数据表B。目标索引结果为S1,S1例如为a3、a1、a2、a4、a5、a6。
在操作S521,依次确定目标索引结果中的目标字段是否为可匹配字段,直至目标字段不是可匹配字段,得到目标索引结果中的第一数量个可匹配字段。
例如,目标索引结果S1中的目标字段a3、a1、a2为查询语句b中的可匹配字段,则第一数量个可匹配字段例如为3个。
在操作S522,计算第一数量个可匹配字段的过滤率与数据表中的记录数量的乘积。
其中,查询语句b中各目标字段的过滤率的计算方式例如与图3所示的过滤能力的计算方式相同或类似,在此不再赘述。数据表B中的记录数量例如与图3所示的表数据量q2的计算方式相同或类似,在此不再赘述。例如,计算目标字段a3、a1、a2中各字段的过滤率与数据表B中的记录数量的乘积。
在操作S523,如果第一数量个可匹配字段的过滤率与数据表中的记录数量的乘积小于第二阈值,确定目标索引结果与当前查询语句中的多个当前字段满足第二预设条件。
其中,第二阈值例如可以是10万。如果第一数量个可匹配字段a3、a1、a2中各字段的过滤率与数据表B中的记录数量的乘积小于10万,表示目标索引结果S1与当前查询语句b的多个当前字段b1、b2、b3、a3、a1、a2、……满足第二预设条件,可以将目标索引结果S1作为当前查询语句b的索引名,具体地,可以将目标索引结果S1中的可匹配字段a3、a1、a2作为当前查询语句b的索引名,并关联a3、a1、a2和当前查询语句b。
在操作S524,如果第一数量个可匹配字段的过滤率与数据表中的记录数量的乘积大于或等于第二阈值并且当前查询语句中的多个当前字段中除第一数量个可匹配字段之外的当前字段不包括高过滤字段或者均匀匹配字段,确定目标索引结果与当前查询语句中的多个当前字段满足第二预设条件。
或者,当前查询语句为b中的多个当前字段例如包括b1、b2、b3、a3、a1、a2、……,除第一数量个可匹配字段之外的当前字段例如为b1、b2、b3、……。如果第一数量个可匹配字段a3、a1、a2中各字段的过滤率与数据表B中的记录数量的乘积大于或等于10万,并且b1、b2、b3、……中不包括高过滤字段或者均匀匹配字段,表示目标索引结果S1与当前查询语句b的多个当前字段b1、b2、b3、a3、a1、a2、……满足第二预设条件,可以将目标索引结果S1作为当前查询语句b的索引名,具体地,可以将目标索引结果S1中的可匹配字段a3、a1、a2作为当前查询语句b的索引名,并关联a3、a1、a2和当前查询语句b。
在操作S525,如果第一数量个可匹配字段的过滤率与数据表中的记录数量的乘积大于或等于第二阈值并且当前查询语句中的多个当前字段中除第一数量个可匹配字段之外的当前字段包括高过滤字段或者均匀匹配字段,确定目标索引结果与当前查询语句中的多个当前字段不满足第二预设条件。
或者,如果第一数量个可匹配字段a3、a1、a2中每个字段的过滤率与数据表B中的记录数量的乘积大于或等于10万,并且b1、b2、b3、……中包括高过滤字段或者均匀匹配字段,表示目标索引结果S1与当前查询语句b的多个当前字段b1、b2、b3、a3、a1、a2、……不满足第二预设条件,可以基于当前查询语句b重新获取新的索引结果S2作为查询语句b的索引名。其中,基于查询语句b重新获取新的索引结果S2的具体过程与基于查询语句a获取目标索引结果S1的过程相同或类似,在此不再赘述。
图7示意性示出了根据本公开实施例的用于生成索引的装置的框图。
如图7所示,用于生成索引的装置700例如包括第一获取模块710、第一处理模块720、第一确定模块730、第二处理模块740以及第一关联模块750。
第一获取模块710可以用于获取目标查询语句。根据本公开实施例,第一获取模块710例如可以执行上文参考图2描述的操作S210,在此不再赘述。
第一处理模块720可以用于处理目标查询语句,得到多个目标字段。根据本公开实施例,第一处理模块720例如可以执行上文参考图2描述的操作S220,在此不再赘述。
第一确定模块730可以用于确定多个目标字段中每个目标字段的目标权重,其中,目标权重表征目标字段在与目标查询语句对应的数据表中的过滤能力,过滤能力与目标字段在数据表中具有的字段值的个数相关联。根据本公开实施例,第一确定模块730例如可以执行上文参考图2描述的操作S230,在此不再赘述。
第二处理模块740可以用于基于多个目标字段中每个目标字段的目标权重,对多个目标字段进行排序处理得到目标索引结果。根据本公开实施例,第二处理模块740例如可以执行上文参考图2描述的操作S240,在此不再赘述。
第一关联模块750可以用于关联目标索引结果和目标查询语句。根据本公开实施例,第一关联模块750例如可以执行上文参考图2描述的操作S250,在此不再赘述。
图8示意性示出了根据本公开实施例的第一确定模块的框图。
如图8所示,第一确定模块730例如包括第一划分子模块731、第二划分子模块732、第一确定子模块733以及第一计算子模块734。
第一划分子模块731可以用于将多个目标字段分为可匹配字段和范围匹配字段,其中,可匹配字段和范围匹配字段对应不同的权重系数。根据本公开实施例,第一划分子模块731例如可以执行上文参考图3描述的操作S231,在此不再赘述。
第二划分子模块732可以用于根据多个目标字段在数据表中的过滤能力,将多个目标字段分为均匀匹配字段、高过滤字段、低过滤字段。根据本公开实施例,第二划分子模块732例如可以执行上文参考图3描述的操作S232,在此不再赘述。
第一确定子模块733可以用于基于多个目标字段中包括均匀匹配字段、高过滤字段或者低过滤字段,确定多个目标字段的积分分值。
根据本公开实施例,基于多个目标字段中包括均匀匹配字段、高过滤字段或者低过滤字段,确定多个目标字段的积分分值包括:在多个目标字段仅包括高过滤字段的情况下,确定多个目标字段均分第一总积分得到每个目标字段的积分分值,在目标查询语句的多个目标字段仅包括均匀匹配字段的情况下,确定多个目标字段均分第二总积分得到每个目标字段的积分分值,在目标查询语句的多个目标字段包括高过滤字段和均匀匹配字段的情况下,确定多个目标字段中的高过滤字段均分第三总积分得到每个目标字段的积分分值。
根据本公开实施例,第一确定子模块733例如可以执行上文参考图3描述的操作S233,在此不再赘述。
第一计算子模块734可以用于基于权重系数和积分分值,计算多个目标字段中每个目标字段的目标权重。根据本公开实施例,第一计算子模块734例如可以执行上文参考图3描述的操作S234,在此不再赘述。
图9示意性示出了根据本公开实施例的第二处理模块的框图。
如图9所示,第二处理模块740例如包括第二确定子模块741、第一添加子模块742以及第二添加子模块743。
第二确定子模块741可以用于在多个目标字段包括分片字段的情况下,确定分片字段为目标索引结果的第一字段,其中,分片字段用于将数据表分为多个子数据表。根据本公开实施例,第二确定子模块741例如可以执行上文参考图4描述的操作S241,在此不再赘述。
第一添加子模块742可以用于将多个目标字段中除分片字段之外的目标字段按照目标权重的数值大小添加至目标索引结果中,直至目标索引结果中的至少一个目标字段满足第一预设条件,其中,满足第一预设条件包括目标索引结果中的至少一个目标字段的过滤率与数据表中的记录数量的乘积小于第一阈值。根据本公开实施例,第一添加子模块742例如可以执行上文参考图4描述的操作S242,在此不再赘述。
第二添加子模块743可以用于在多个目标字段不包括分片字段的情况下,将多个目标字段按照目标权重的数值大小添加至目标索引结果中,直至目标索引结果中的至少一个目标字段满足第一预设条件。根据本公开实施例,第二添加子模块743例如可以执行上文参考图4描述的操作S243,在此不再赘述。
图10示意性示出了根据本公开另一实施例的用于生成索引的装置的框图。
如图10所示,用于生成索引的装置1000例如包括第一获取模块710、第一处理模块720、第一确定模块730、第二处理模块740、第一关联模块750、第二获取模块1010、第二确定模块1020、第二关联模块1030以及第三处理模块1040。其中,第一获取模块710、第一处理模块720、第一确定模块730、第二处理模块740以及第一关联模块750与上参考图7描述的模块相同或类似,在此不再赘述
第二获取模块1010可以用于获取当前查询语句。根据本公开实施例,第二获取模块1010例如可以执行上文参考图5描述的操作S510,在此不再赘述。
第二确定模块1020可以用于确定目标索引结果与当前查询语句中的多个当前字段是否满足第二预设条件。根据本公开实施例,第二确定模块1020例如可以执行上文参考图5描述的操作S520,在此不再赘述。
第二关联模块1030可以用于响应于确定目标索引结果与当前查询语句中的多个当前字段满足第二预设条件,关联目标索引结果和当前查询语句。根据本公开实施例,第二关联模块1030例如可以执行上文参考图5描述的操作S530,在此不再赘述。
第三处理模块1040可以用于响应于确定目标索引结果与当前查询语句中的多个当前字段不满足第二预设条件,对多个当前字段进行排序处理得到当前索引结果,并关联当前索引结果和当前查询语句。根据本公开实施例,第三处理模块1040例如可以执行上文参考图5描述的操作S540,在此不再赘述。
图11示意性示出了根据本公开实施例的第二确定模块的框图。
如图11所示,第二确定模块1020例如包括第三确定子模块1021、第二计算子模块1022、第四确定子模块1023、第五确定子模块1024以及第六确定子模块1025。
第三确定子模块1021可以用于依次确定目标索引结果中的目标字段是否为可匹配字段,直至目标字段不是可匹配字段,得到目标索引结果中的第一数量个可匹配字段。根据本公开实施例,第三确定子模块1021例如可以执行上文参考图6描述的操作S521,在此不再赘述。
第二计算子模块1022可以用于计算第一数量个可匹配字段的过滤率与数据表中的记录数量的乘积。根据本公开实施例,第二计算子模块1022例如可以执行上文参考图6描述的操作S522,在此不再赘述。
第四确定子模块1023可以用于在如果第一数量个可匹配字段的过滤率与数据表中的记录数量的乘积小于第二阈值,确定目标索引结果与当前查询语句中的多个当前字段满足第二预设条件。根据本公开实施例,第四确定子模块1023例如可以执行上文参考图6描述的操作S523,在此不再赘述。
第五确定子模块1024可以用于在如果第一数量个可匹配字段的过滤率与数据表中的记录数量的乘积大于或等于第二阈值并且当前查询语句中的多个当前字段中除第一数量个可匹配字段之外的当前字段不包括高过滤字段或者均匀匹配字段,确定目标索引结果与当前查询语句中的多个当前字段满足第二预设条件。根据本公开实施例,第五确定子模块1024例如可以执行上文参考图6描述的操作S524,在此不再赘述。
第六确定子模块1025可以用于在如果第一数量个可匹配字段的过滤率与数据表中的记录数量的乘积大于或等于第二阈值并且当前查询语句中的多个当前字段中除第一数量个可匹配字段之外的当前字段包括高过滤字段或者均匀匹配字段,确定目标索引结果与当前查询语句中的多个当前字段不满足第二预设条件。根据本公开实施例,第六确定子模块1025例如可以执行上文参考图6描述的操作S525,在此不再赘述。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
例如,第一获取模块710、第一处理模块720、第一确定模块730、第一划分子模块731、第二划分子模块732、第一确定子模块733、第一计算子模块734、第二处理模块740、第二确定子模块741、第一添加子模块742、第二添加子模块743、第一关联模块750、第二获取模块1010、第二确定模块1020、第三确定子模块1021、第二计算子模块1022、第四确定子模块1023、第五确定子模块1024、第六确定子模块1025、第二关联模块1030以及第三处理模块1040中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取模块710、第一处理模块720、第一确定模块730、第一划分子模块731、第二划分子模块732、第一确定子模块733、第一计算子模块734、第二处理模块740、第二确定子模块741、第一添加子模块742、第二添加子模块743、第一关联模块750、第二获取模块1010、第二确定模块1020、第三确定子模块1021、第二计算子模块1022、第四确定子模块1023、第五确定子模块1024、第六确定子模块1025、第二关联模块1030以及第三处理模块1040中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上***、基板上的***、封装上的***、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取模块710、第一处理模块720、第一确定模块730、第一划分子模块731、第二划分子模块732、第一确定子模块733、第一计算子模块734、第二处理模块740、第二确定子模块741、第一添加子模块742、第二添加子模块743、第一关联模块750、第二获取模块1010、第二确定模块1020、第三确定子模块1021、第二计算子模块1022、第四确定子模块1023、第五确定子模块1024、第六确定子模块1025、第二关联模块1030以及第三处理模块1040中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图12示意性示出了根据本公开实施例的用于实现用于生成索引的计算机***的方框图。图12示出的计算机***仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图12所示,计算机***1200包括处理器1201、计算机可读存储介质1202。该***1200可以执行根据本公开实施例的方法。
具体地,处理器1201例如可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1201还可以包括用于缓存用途的板载存储器。处理器1201可以是用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
计算机可读存储介质1202,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体***、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
计算机可读存储介质1202可以包括计算机程序1203,该计算机程序1203可以包括代码/计算机可执行指令,其在由处理器1201执行时使得处理器1201执行根据本公开实施例的方法或其任何变形。
计算机程序1203可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序1203中的代码可以包括一个或多个程序模块,例如包括1203A、模块1203B、……。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器1201执行时,使得处理器1201可以执行根据本公开实施例的方法或其任何变形。
根据本公开的实施例,第一获取模块710、第一处理模块720、第一确定模块730、第一划分子模块731、第二划分子模块732、第一确定子模块733、第一计算子模块734、第二处理模块740、第二确定子模块741、第一添加子模块742、第二添加子模块743、第一关联模块750、第二获取模块1010、第二确定模块1020、第三确定子模块1021、第二计算子模块1022、第四确定子模块1023、第五确定子模块1024、第六确定子模块1025、第二关联模块1030以及第三处理模块1040中的至少一个可以实现为参考图12描述的计算机程序模块,其在被处理器1201执行时,可以实现上面描述的相应操作。
本公开还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备/装置/***中所包含的;也可以是单独存在,而未装配入该设备/装置/***中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现上述方法。
根据本公开的实施例,计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、射频信号等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (10)
1.一种用于生成索引的方法,包括:
获取目标查询语句;
处理所述目标查询语句,得到多个目标字段;
确定所述多个目标字段中每个目标字段的目标权重,其中,所述目标权重表征所述目标字段在与所述目标查询语句对应的数据表中的过滤能力,所述过滤能力与所述目标字段在所述数据表中具有的字段值的个数相关联;
基于所述多个目标字段中每个目标字段的目标权重,对所述多个目标字段进行排序处理得到目标索引结果;以及
关联所述目标索引结果和所述目标查询语句。
2.根据权利要求1所述的方法,其中,所述确定所述多个目标字段中每个目标字段的目标权重包括:
将所述多个目标字段分为可匹配字段和范围匹配字段,其中,所述可匹配字段和所述范围匹配字段对应不同的权重系数;
根据所述多个目标字段在所述数据表中的过滤能力,将所述多个目标字段分为均匀匹配字段、高过滤字段、低过滤字段;
基于所述多个目标字段中包括均匀匹配字段、高过滤字段或者低过滤字段,确定所述多个目标字段的积分分值;以及
基于所述权重系数和所述积分分值,计算所述多个目标字段中每个目标字段的目标权重。
3.根据权利要求2所述的方法,其中,所述基于所述多个目标字段中包括均匀匹配字段、高过滤字段或者低过滤字段,确定所述多个目标字段的积分分值包括:
在所述多个目标字段仅包括高过滤字段的情况下,确定所述多个目标字段均分第一总积分得到每个目标字段的积分分值;
在所述目标查询语句的多个目标字段仅包括均匀匹配字段的情况下,确定所述多个目标字段均分第二总积分得到每个目标字段的积分分值;以及
在所述目标查询语句的多个目标字段包括高过滤字段和均匀匹配字段的情况下,确定所述多个目标字段中的高过滤字段均分第三总积分得到每个目标字段的积分分值。
4.根据权利要求1-3中任意一项所述的方法,其中,所述基于所述多个目标字段中每个目标字段的目标权重,对所述多个目标字段进行排序处理得到目标索引结果包括:
在所述多个目标字段包括分片字段的情况下,确定所述分片字段为所述目标索引结果的第一字段,其中,所述分片字段用于将所述数据表分为多个子数据表;以及
将所述多个目标字段中除所述分片字段之外的目标字段按照目标权重的数值大小添加至所述目标索引结果中,直至所述目标索引结果中的至少一个目标字段满足第一预设条件,
其中,所述满足第一预设条件包括所述目标索引结果中的至少一个目标字段的过滤率与所述数据表中的记录数量的乘积小于第一阈值。
5.根据权利要求4所述的方法,其中,其中,所述基于所述多个目标字段中每个目标字段的目标权重,对所述多个目标字段进行排序处理得到目标索引结果包括:
在所述多个目标字段不包括所述分片字段的情况下,将所述多个目标字段按照目标权重的数值大小添加至所述目标索引结果中,直至所述目标索引结果中的至少一个目标字段满足所述第一预设条件。
6.根据权利要求5所述的方法,还包括:
获取当前查询语句;
确定所述目标索引结果与所述当前查询语句中的多个当前字段是否满足第二预设条件;
响应于确定所述目标索引结果与所述当前查询语句中的多个当前字段满足第二预设条件,关联所述目标索引结果和所述当前查询语句;以及
响应于确定所述目标索引结果与所述当前查询语句中的多个当前字段不满足第二预设条件,对所述多个当前字段进行排序处理得到当前索引结果,并关联所述当前索引结果和所述当前查询语句。
7.根据权利要求6所述的方法,其中,所述确定所述目标索引结果与所述当前查询语句中的多个当前字段是否满足第二预设条件包括:
依次确定所述目标索引结果中的目标字段是否为可匹配字段,直至目标字段不是可匹配字段,得到所述目标索引结果中的第一数量个可匹配字段;
计算所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积;
如果所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积小于第二阈值,确定所述目标索引结果与所述当前查询语句中的多个当前字段满足所述第二预设条件;
如果所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积大于或等于所述第二阈值并且所述当前查询语句中的多个当前字段中除所述第一数量个可匹配字段之外的当前字段不包括高过滤字段或者均匀匹配字段,确定所述目标索引结果与所述当前查询语句中的多个当前字段满足所述第二预设条件;以及
如果所述第一数量个可匹配字段的过滤率与所述数据表中的记录数量的乘积大于或等于所述第二阈值并且所述当前查询语句中的多个当前字段中除所述第一数量个可匹配字段之外的当前字段包括高过滤字段或者均匀匹配字段,确定所述目标索引结果与所述当前查询语句中的多个当前字段不满足所述第二预设条件。
8.一种用于生成索引的装置,包括:
第一获取模块,获取目标查询语句;
第一处理模块,处理所述目标查询语句,得到多个目标字段;
第一确定模块,确定所述多个目标字段中每个目标字段的目标权重,其中,所述目标权重表征所述目标字段在与所述目标查询语句对应的数据表中的过滤能力,所述过滤能力与所述目标字段在所述数据表中具有的字段值的个数相关联;
第二处理模块,基于所述多个目标字段中每个目标字段的目标权重,对所述多个目标字段进行排序处理得到目标索引结果;以及
第一关联模块,关联所述目标索引结果和所述目标查询语句。
9.一种计算设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,存储有计算机可执行指令,所述指令在被执行时用于实现权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911010711.6A CN110750555A (zh) | 2019-10-22 | 2019-10-22 | 用于生成索引的方法、装置、计算设备以及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911010711.6A CN110750555A (zh) | 2019-10-22 | 2019-10-22 | 用于生成索引的方法、装置、计算设备以及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110750555A true CN110750555A (zh) | 2020-02-04 |
Family
ID=69279436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911010711.6A Pending CN110750555A (zh) | 2019-10-22 | 2019-10-22 | 用于生成索引的方法、装置、计算设备以及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110750555A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113392311A (zh) * | 2021-06-17 | 2021-09-14 | 中国工商银行股份有限公司 | 字段搜索方法、字段搜索装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425672A (zh) * | 2012-05-17 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种数据库索引的建立方法及装置 |
CN103810212A (zh) * | 2012-11-14 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 一种数据库索引的自动创建方法及*** |
CN107016019A (zh) * | 2015-10-23 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 数据库索引创建方法及装置 |
CN107038207A (zh) * | 2017-02-20 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、数据处理方法及装置 |
CN109145004A (zh) * | 2018-08-29 | 2019-01-04 | 智慧互通科技有限公司 | 一种创建数据库索引的方法及装置 |
-
2019
- 2019-10-22 CN CN201911010711.6A patent/CN110750555A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103425672A (zh) * | 2012-05-17 | 2013-12-04 | 阿里巴巴集团控股有限公司 | 一种数据库索引的建立方法及装置 |
CN103810212A (zh) * | 2012-11-14 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 一种数据库索引的自动创建方法及*** |
CN107016019A (zh) * | 2015-10-23 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 数据库索引创建方法及装置 |
CN107038207A (zh) * | 2017-02-20 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、数据处理方法及装置 |
CN109145004A (zh) * | 2018-08-29 | 2019-01-04 | 智慧互通科技有限公司 | 一种创建数据库索引的方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113392311A (zh) * | 2021-06-17 | 2021-09-14 | 中国工商银行股份有限公司 | 字段搜索方法、字段搜索装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163957B2 (en) | Performing semantic graph search | |
US9940399B2 (en) | Methods and systems for pathing analysis | |
US11580168B2 (en) | Method and system for providing context based query suggestions | |
US10162550B2 (en) | Large-scale, dynamic graph storage and processing system | |
CN108304444B (zh) | 信息查询方法及装置 | |
WO2017084362A1 (zh) | 模型生成方法、推荐方法及对应装置、设备和存储介质 | |
CN109614402B (zh) | 多维数据查询方法和装置 | |
US9374375B2 (en) | Systems and methods for publishing datasets | |
CN110362727A (zh) | 用于搜索***的第三方搜索应用 | |
US11182438B2 (en) | Hybrid processing of disjunctive and conjunctive conditions of a search query for a similarity search | |
US9043321B2 (en) | Enhancing cluster analysis using document metadata | |
CN107291835B (zh) | 一种搜索词的推荐方法和装置 | |
US10929447B2 (en) | Systems and methods for customized data parsing and paraphrasing | |
US9965558B2 (en) | Cross-channel social search | |
US9529855B2 (en) | Systems and methods for point of interest data ingestion | |
CN110750555A (zh) | 用于生成索引的方法、装置、计算设备以及介质 | |
CN110765357A (zh) | 在线文档的搜索方法、装置、设备及存储介质 | |
US20130232172A1 (en) | Methods and systems for matching expressions | |
CN112184370A (zh) | 一种推送产品的方法和装置 | |
CN107256244B (zh) | 数据处理方法和*** | |
CN110851438A (zh) | 一种数据库索引优化建议与验证的方法和装置 | |
CN109635072B (zh) | 舆情数据分布式存储方法、装置、存储介质和终端设备 | |
US20200210438A1 (en) | Enhanced query performance prediction for information retrieval systems | |
WO2022072349A1 (en) | System and method for matching into a complex data set | |
CA3236957A1 (en) | Privacy sensitive estimation of digital resource access frequency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200204 |
|
RJ01 | Rejection of invention patent application after publication |