一种基于单索引多条件的查询方法及系统技术方案

技术编号:34803956 阅读:48 留言:0更新日期:2022-09-03 20:11
本发明专利技术公开了一种基于单索引多条件的查询方法及系统,根据需要查询的条件的优先级设计行键rowkey,将需要作为条件列的值有组织的存入rowkey中制作出多个SQL,并对多个SQL进行合并来达到提高查询效率。通过对SQL整理和动态拼接算法,可达到多条件动态查询的目的,通过将SQL复杂化,将索引简单化的思路,来实现多条件查询。方法实现简单,容易落地,本发明专利技术大大提高了信息系统中检索信息的速度,并在一定程度上减少了索引的创建于使用,为减少数据冗余,提高数据的写入速度提供了更多样的优化方案,在稳定性和和执行效率都有较好的表现。在稳定性和和执行效率都有较好的表现。在稳定性和和执行效率都有较好的表现。

【技术实现步骤摘要】
一种基于单索引多条件的查询方法及系统


[0001]本专利技术涉及数据库
,具体涉及一种基于单索引多条件的查询方法及系统。

技术介绍

[0002]数据库技术几乎在所有信息系统中是一个必不可少的组件。信息系统建设过程对数据库的优化是一个非常重要的部分。数据库的使用效率决定了信息系统整体的使用效果和用户的满意度。数据库也是很多互联网应用中木桶效应里最短的一块板子。所以往往数据库的效率几乎就决定了信息系统的使用效率如何。时下关于数据库的优化手段多种多样百家争鸣。
[0003]目前针对某个条件提高查询效率的办法效果最直接的就是添加索引,在使用mysql、oracle等关系型数据库时这几乎已经成为了一种条件反射操作。但是在某些非关系型数据库中,添加索引并不是一个“简单的事情”,因为多一个索引往往就会多一份数据写入的开销,同时也会多一份数据上的冗余。具体原因还是由于像类似Hbase这种数据库的设计原理。以Hbase为例,它的内部存储结构为Key

value形式,全局只有一个索引即主键索引,该索引同时是主键也是一个唯一索引,而值全部存储于value中。
[0004]为了满足业务需要,往往会把像Hbase这种非关系型数据库关系化,如使用类似Phoenix等技术。不过无论使用哪种关系化技术,最终的存储原理都是一致的,这就导致在面对多条件查询时要么逐个添加索引,牺牲写入和存储开销,要么进行全扫描操作,只能二选一。当数据量较小时是可以使用全扫操作的,但是并非所有场景的数据规模都能如所愿。

技术实现思路

[0005]为此,本专利技术提供一种基于单索引多条件的查询方法及系统,以解决在单索引架构数据库上实现不通过额外索引机制完成多条件的查询任务的问题。
[0006]为了实现上述目的,本专利技术提供如下技术方案:
[0007]根据本专利技术实施例的第一方面,提出了一种基于单索引多条件的查询方法,所述方法包括:
[0008]根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容;
[0009]获取各条件在各自范围内的所有取值并存储;
[0010]根据待查询的某个条件,对存储的其他条件的取值进行遍历,并根据行键内容将各条件的值按优先级顺序进行拼接,依次生成多个SQL语句;
[0011]将生成的多个SQL语句进行合并,并使用合并得到的SQL语句进行查询。
[0012]进一步地,获取各条件在各自范围内的所有取值并存储,具体还包括:
[0013]若取值有更新,则对存储的内容进行及时更新。
[0014]进一步地,根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容,具体包括:
[0015]若确定多个条件的优先级顺序为:条件1>条件2>
……
>条件n,则设计行键为条件1

条件2
‑……‑
条件n。
[0016]进一步地,将生成的多个SQL语句进行合并,具体包括:
[0017]将多个SQL语句使用union关键字拼接成一个SQL。
[0018]根据本专利技术实施例的第二方面,提出了一种基于单索引多条件的查询系统,所述系统包括:
[0019]优先级确定模块,用于根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容;
[0020]条件取值存储模块,用于获取各条件在各自范围内的所有取值并存储;
[0021]条件拼接模块,用于根据待查询的某个条件,对存储的其他条件的取值进行遍历,并根据行键内容将各条件的值按优先级顺序进行拼接,依次生成多个SQL语句;
[0022]SQL语句合并查询模块,用于将生成的多个SQL语句进行合并,并使用合并得到的SQL语句进行查询。
[0023]进一步地,所述条件取值存储模块,具体用于若取值有更新,则对存储的内容进行及时更新。
[0024]进一步地,所述优先级确定模块,具体用于若确定多个条件的优先级顺序为:条件1>条件2>
……
>条件n,则设计行键为条件1

条件2
‑……‑
条件n。
[0025]根据本专利技术实施例的第三方面,提出了一种计算机存储介质,所述计算机存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于被一种基于单索引多条件的查询系统执行如上任一项所述的方法。
[0026]本专利技术具有如下优点:
[0027]本专利技术提出的一种基于单索引多条件的查询方法及系统,根据需要查询的条件的优先级设计行键rowkey,将需要作为条件列的值有组织的存入rowkey中制作出多个SQL,并对多个SQL进行合并来达到提高查询效率。通过对SQL整理和动态拼接算法,可达到多条件动态查询的目的,通过将SQL复杂化,将索引简单化的思路,来实现多条件查询。方法实现简单,容易落地,本专利技术大大提高了信息系统中检索信息的速度,并在一定程度上减少了索引的创建于使用,为减少数据冗余,提高数据的写入速度提供了更多样的优化方案,在稳定性和和执行效率都有较好的表现。
附图说明
[0028]为了更清楚地说明本专利技术的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
[0029]本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本专利技术可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本专利技术所能产生的功效及所能达成的目的下,均应仍落在本专利技术所揭示的
技术实现思路
得能涵盖的范围内。
[0030]图1为本专利技术实施例1提供的一种基于单索引多条件的查询方法的流程示意图。
具体实施方式
[0031]以下由特定的具体实施例说明本专利技术的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本专利技术的其他优点及功效,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0032]实施例1
[0033]如图1所示,本实施例提出了一种基于单索引多条件的查询方法,该方法包括:
[0034]S100、根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容。
[0035]以员工数据为例,其中,员工有工龄,所属部门,职级和工号。在常规的行键(唯一索引)的设计中,往往会直接选用工号这个唯一标识作为主键(行键)进行保存。但是如果需要通过其他条件查询时就比较麻烦,只能通过添加索引的办法来提高查询速度。
[0036]本实施例中,将需要查询的条件整理出优先级,优先级越高越向前,依次类推。比如使用部门查询最多,职级次之,工龄本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于单索引多条件的查询方法,其特征在于,所述方法包括:根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容;获取各条件在各自范围内的所有取值并存储;根据待查询的某个条件,对存储的其他条件的取值进行遍历,并根据行键内容将各条件的值按优先级顺序进行拼接,依次生成多个SQL语句;将生成的多个SQL语句进行合并,并使用合并得到的SQL语句进行查询。2.根据权利要求1所述的一种基于单索引多条件的查询方法,其特征在于,获取各条件在各自范围内的所有取值并存储,具体还包括:若取值有更新,则对存储的内容进行及时更新。3.根据权利要求1所述的一种基于单索引多条件的查询方法,其特征在于,根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容,具体包括:若确定多个条件的优先级顺序为:条件1>条件2>
……
>条件n,则设计行键为条件1

条件2
‑……‑
条件n。4.根据权利要求1所述的一种基于单索引多条件的查询方法,其特征在于,将生成的多个SQL语句进行合并,具体包括:将多个SQL语句使用union关键字拼接成一个SQL。5.一种基于单索引多条件的查询系统,其特...

【专利技术属性】
技术研发人员:代俊朴陈国芳
申请(专利权)人:北京鼎普科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1