一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于单索引多条件的查询方法及系统与流程

2022-09-03 14:13:36 来源:中国专利 TAG:


1.本发明涉及数据库技术领域,具体涉及一种基于单索引多条件的查询方法及系统。


背景技术:

2.数据库技术几乎在所有信息系统中是一个必不可少的组件。信息系统建设过程对数据库的优化是一个非常重要的部分。数据库的使用效率决定了信息系统整体的使用效果和用户的满意度。数据库也是很多互联网应用中木桶效应里最短的一块板子。所以往往数据库的效率几乎就决定了信息系统的使用效率如何。时下关于数据库的优化手段多种多样百家争鸣。
3.目前针对某个条件提高查询效率的办法效果最直接的就是添加索引,在使用mysql、oracle等关系型数据库时这几乎已经成为了一种条件反射操作。但是在某些非关系型数据库中,添加索引并不是一个“简单的事情”,因为多一个索引往往就会多一份数据写入的开销,同时也会多一份数据上的冗余。具体原因还是由于像类似hbase这种数据库的设计原理。以hbase为例,它的内部存储结构为key-value形式,全局只有一个索引即主键索引,该索引同时是主键也是一个唯一索引,而值全部存储于value中。
4.为了满足业务需要,往往会把像hbase这种非关系型数据库关系化,如使用类似phoenix等技术。不过无论使用哪种关系化技术,最终的存储原理都是一致的,这就导致在面对多条件查询时要么逐个添加索引,牺牲写入和存储开销,要么进行全扫描操作,只能二选一。当数据量较小时是可以使用全扫操作的,但是并非所有场景的数据规模都能如所愿。


技术实现要素:

5.为此,本发明提供一种基于单索引多条件的查询方法及系统,以解决在单索引架构数据库上实现不通过额外索引机制完成多条件的查询任务的问题。
6.为了实现上述目的,本发明提供如下技术方案:
7.根据本发明实施例的第一方面,提出了一种基于单索引多条件的查询方法,所述方法包括:
8.根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容;
9.获取各条件在各自范围内的所有取值并存储;
10.根据待查询的某个条件,对存储的其他条件的取值进行遍历,并根据行键内容将各条件的值按优先级顺序进行拼接,依次生成多个sql语句;
11.将生成的多个sql语句进行合并,并使用合并得到的sql语句进行查询。
12.进一步地,获取各条件在各自范围内的所有取值并存储,具体还包括:
13.若取值有更新,则对存储的内容进行及时更新。
14.进一步地,根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容,具体包括:
15.若确定多个条件的优先级顺序为:条件1>条件2>
……
>条件n,则设计行键为条件1-条件2
‑……‑
条件n。
16.进一步地,将生成的多个sql语句进行合并,具体包括:
17.将多个sql语句使用union关键字拼接成一个sql。
18.根据本发明实施例的第二方面,提出了一种基于单索引多条件的查询系统,所述系统包括:
19.优先级确定模块,用于根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容;
20.条件取值存储模块,用于获取各条件在各自范围内的所有取值并存储;
21.条件拼接模块,用于根据待查询的某个条件,对存储的其他条件的取值进行遍历,并根据行键内容将各条件的值按优先级顺序进行拼接,依次生成多个sql语句;
22.sql语句合并查询模块,用于将生成的多个sql语句进行合并,并使用合并得到的sql语句进行查询。
23.进一步地,所述条件取值存储模块,具体用于若取值有更新,则对存储的内容进行及时更新。
24.进一步地,所述优先级确定模块,具体用于若确定多个条件的优先级顺序为:条件1>条件2>
……
>条件n,则设计行键为条件1-条件2
‑……‑
条件n。
25.根据本发明实施例的第三方面,提出了一种计算机存储介质,所述计算机存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于被一种基于单索引多条件的查询系统执行如上任一项所述的方法。
26.本发明具有如下优点:
27.本发明提出的一种基于单索引多条件的查询方法及系统,根据需要查询的条件的优先级设计行键rowkey,将需要作为条件列的值有组织的存入rowkey中制作出多个sql,并对多个sql进行合并来达到提高查询效率。通过对sql整理和动态拼接算法,可达到多条件动态查询的目的,通过将sql复杂化,将索引简单化的思路,来实现多条件查询。方法实现简单,容易落地,本发明大大提高了信息系统中检索信息的速度,并在一定程度上减少了索引的创建于使用,为减少数据冗余,提高数据的写入速度提供了更多样的优化方案,在稳定性和和执行效率都有较好的表现。
附图说明
28.为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
29.本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。
30.图1为本发明实施例1提供的一种基于单索引多条件的查询方法的流程示意图。
具体实施方式
31.以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
32.实施例1
33.如图1所示,本实施例提出了一种基于单索引多条件的查询方法,该方法包括:
34.s100、根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容。
35.以员工数据为例,其中,员工有工龄,所属部门,职级和工号。在常规的行键(唯一索引)的设计中,往往会直接选用工号这个唯一标识作为主键(行键)进行保存。但是如果需要通过其他条件查询时就比较麻烦,只能通过添加索引的办法来提高查询速度。
36.本实施例中,将需要查询的条件整理出优先级,优先级越高越向前,依次类推。比如使用部门查询最多,职级次之,工龄次次之。那么就可以设计行键为部门-职级-工龄-工号。这样设计后如果查询某个部门的员工只要指定rowkey》部门x-&&rowkey《部门x-|即可。但还需要解决查询职级等条件。
37.s200、获取各条件在各自范围内的所有取值并存储。
38.首先,部门和职级工龄等信息在一个公司内值的范围是固定的。比如部门一般不会特别多,一般几十个就足够使用了。职级也基本都是固定的值,还有工龄基本0-50范围内足够使用。那么就可以将这些固定的存储起来,如果有更新就去更新这个存储的集合。然后每次查询时会通过这些存储的集合生成sql。
39.s300、根据待查询的某个条件,对存储的其他条件的取值进行遍历,并根据行键内容将各条件的值按优先级顺序进行拼接,依次生成多个sql语句。
40.由于行键是从左到右按字典顺序存储的,所以当查询不是最左的条件时需要将最左侧补齐。比如要查询工龄为3的员工,因为每个部门每个职级都有可能有工龄为3的员工,为了查询这个条件需要在集合中获取所有部门和职级,然后制作出多个sql,做后将这多个sql使用union拼接成一个sql。
41.如:
42.where rowkey》a部门-中级-3
43.where rowkey》a部门-高级-3
44.where rowkey》b部门-中级-3
45.依次类推。
46.值得注意的时候,条件及条件的值越多,他们之间的全排列组合的可能性就越多。所以需要注意生成sql。
47.s400、将生成的多个sql语句进行合并,并使用合并得到的sql语句进行查询。
48.当完成上述过程后会得到多个sql使用union关键字(结果集合并功能)将多个sql结果进行合并。当然如果某些类库不支持union也可以通过程序实现类似的功能。最后把所有制作的sql所执行后查出的所有结果进行合并。该合并后的集合就是最终需要查询的结果。
49.可以通过在少量规模的数据上进行结果集正确性的验证。将普通查询语句的执行
结果与本发明算法执行的结果进行对比。以保证算法的准确性。
50.本实施例提出的一种基于单索引多条件的查询方法,实现简单,容易落地,本大大提高了信息系统中检索信息的速度,并在一定程度上减少了索引的创建于使用。为减少数据冗余,提高数据的写入速度提供了更多样的优化方案。在时间信息系统建设中验证了本发明的可操作性。在时间的测试中使用本发明算法设计的程序在稳定性和和执行效率都有较好的表现。
51.实施例2
52.与上述实施例1相对应的,本实施例提出了一种基于单索引多条件的查询系统,所述系统包括:
53.优先级确定模块,用于根据业务逻辑确定多个条件的优先级,并根据优先级设计行键内容;
54.条件取值存储模块,用于获取各条件在各自范围内的所有取值并存储;
55.条件拼接模块,用于根据待查询的某个条件,对存储的其他条件的取值进行遍历,并根据行键内容将各条件的值按优先级顺序进行拼接,依次生成多个sql语句;
56.sql语句合并查询模块,用于将生成的多个sql语句进行合并,并使用合并得到的sql语句进行查询。
57.进一步地,所述条件取值存储模块,具体用于若取值有更新,则对存储的内容进行及时更新。
58.进一步地,所述优先级确定模块,具体用于若确定多个条件的优先级顺序为:条件1>条件2>
……
>条件n,则设计行键为条件1-条件2
‑……‑
条件n。
59.本发明实施例提供的一种基于单索引多条件的查询系统中各部件所执行的功能均已在上述实施例1中做了详细介绍,因此这里不做过多赘述。
60.实施例3
61.与上述实施例相对应的,本实施例提出了一种计算机存储介质,计算机存储介质中包含一个或多个程序指令,一个或多个程序指令用于被一种基于单索引多条件的查询系统执行如实施例1的方法。
62.虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献