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

基于SQL语句的报表查询方法和系统与流程

2022-03-26 17:02:11 来源:中国专利 TAG:
基于sql语句的报表查询方法和系统
技术领域
:1.本发明主要涉及数据处理领域,尤其涉及一种基于sql语句的报表查询方法和系统。
背景技术
::2.当前很多报表系统查询一张报表时,都会触发多条sql语句的查询流程,这样的查询方式存在着一些缺陷。例如,用户的需求有时会涉及同时访问多张报表或基于同一张报表提出多个查询请求,但是对于sql的执行引擎而言,同时访问量是每张报表对应的sql语句个数乘以同时访问的报表数。这就对sql执行引擎压力很大。导致出现查询性能问题,如果造成系统故障就会对查询速率和用户体验产生不好的影响。技术实现要素:3.本发明要解决的技术问题是提供一种基于sql语句的报表查询方法和系统,可以有效提升查询速率,提升系统稳定性。4.为解决上述技术问题,本发明提供了一种基于sql语句的报表查询方法,包括如下的步骤:5.接收多个报表查询请求,并获取每个报表查询请求产生的原始sql语句;6.根据合并规则将多个报表查询请求对应的多个原始sql语句在预设时间内完成合并,以生成一个或多个查询sql语句,其中,所述合并规则包括将所述多个原始sql语句中的关键词select和关键词groupby作为合并标识的第一合并规则;以及7.根据所述一个或多个查询sql语句执行所述多个报表查询请求。8.在本发明的一实施例中,所述关键词select之后字段包括聚合函数和查询字段,且所述查询字段与所述关键词groupby之后字段相同,所述第一合并规则包括:当多个原始sql语句中的关键词from之后字段以及关键词where之后字段相同、而关键词groupby之后字段不同,则将所述多个原始sql语句中的所述关键词select之后字段和所述关键词groupby之后字段分别合并。9.在本发明的一实施例中,所述合并规则还包括仅将所述多个原始sql语句中的关键词select作为合并标识的第二合并规则。10.在本发明的一实施例中,所述第二合并规则包括:当多个原始sql语句中的关键词from之后字段以及关键词where之后字段相同、而关键词select之后字段不同,则将所述关键词select之后字段合并。11.在本发明的一实施例中,所述根据合并规则将多个报表查询请求对应的多个原始sql语句在预设时间内完成合并,以生成一个或多个查询sql语句的步骤具体包括:12.将与所述多个报表查询请求对应的所述多个原始sql语句分别转化为原始java模型实例;13.根据所述合并规则将与所述多个原始sql语句对应的多个原始java模型实例合并,以生成一个或多个查询java模型实例;以及14.将所述一个或多个查询java模型实例解析以获得所述一个或多个查询sql语句。15.在本发明的一实施例中,所述原始java模型实例中包括查询列信息、表信息、条件信息、聚合信息、排序信息和/或分页信息,其中,所述查询列信息为所述多个原始sql语句中的关键词select之后字段,所述表信息为所述多个原始sql语句中的关键词from之后字段,所述条件信息为所述多个原始sql语句中的关键词where之后字段,所述聚合信息为所述多个原始sql语句中的关键词groupby之后字段,所述排序信息为所述多个原始sql语句中的关键词orderby之后字段,所述分页信息为所述多个原始sql语句中的关键词limit之后字段。16.在本发明的一实施例中,所述预设时间的范围为5~15毫秒。17.为了解决上述的技术问题,本发明的另一方面还提出了一种基于sql语句的报表查询系统,包括:18.请求接收模块,配置为接收多个报表查询请求,并获取每个报表查询请求产生的原始sql语句;19.合并模块,配置为根据合并规则将多个报表查询请求对应的多个原始sql语句在预设时间内完成合并,以生成一个或多个查询sql语句,其中,所述合并规则包括将所述多个原始sql语句中的关键词select和关键词groupby作为合并标识的第一合并规则;以及20.sql执行引擎,配置为根据所述一个或多个查询sql语句执行所述多个报表查询请求。21.本发明的另一方面还提出了一种基于sql语句的报表查询系统,包括:22.存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现上述基于sql语句的报表查询方法。23.本发明的另一方面还提出了一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现上述基于sql语句的报表查询方法。24.与现有技术相比,本发明具有以下优点:25.本方案基于特定sql语句合并规则的sql语句实时合并方案,特别是对于可以有效的提升单次和瞬时多次的报表查询效率,缓解sql执行引擎的访问压力,提升系统稳定性,从而提升用户体验。附图说明26.包括附图是为提供对本技术进一步的理解,它们被收录并构成本技术的一部分,附图示出了本技术的实施例,并与本说明书一起起到解释本发明原理的作用。附图中:27.图1是本发明一实施例的一种基于sql语句的报表查询方法的流程示意图;28.图2是本发明一实施例的一种基于sql语句的报表查询系统的系统框图;29.图3a和图3b是现有技术和本发明的一种基于sql语句的报表查询方案的原理对比示意图;以及30.图4是本发明另外一实施例的一种基于sql语句的报表查询系统的系统框图。具体实施方式31.为了更清楚地说明本技术的实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。32.如本技术和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。33.除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本技术的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。34.在本技术的描述中,需要理解的是,方位词如“前、后、上、下、左、右”、“横向、竖向、垂直、水平”和“顶、底”等所指示的方位或位置关系通常是基于附图所示的方位或位置关系,仅是为了便于描述本技术和简化描述,在未作相反说明的情况下,这些方位词并不指示和暗示所指的装置或元件必须具有特定的方位或者以特定的方位构造和操作,因此不能理解为对本技术保护范围的限制;方位词“内、外”是指相对于各部件本身的轮廓的内外。35.为了便于描述,在这里可以使用空间相对术语,如“在……之上”、“在……上方”、“在……上表面”、“上面的”等,用来描述如在图中所示的一个器件或特征与其他器件或特征的空间位置关系。应当理解的是,空间相对术语旨在包含除了器件在图中所描述的方位之外的在使用或操作中的不同方位。例如,如果附图中的器件被倒置,则描述为“在其他器件或构造上方”或“在其他器件或构造之上”的器件之后将被定位为“在其他器件或构造下方”或“在其他器件或构造之下”。因而,示例性术语“在……上方”可以包括“在……上方”和“在……下方”两种方位。该器件也可以其他不同方式定位(旋转90度或处于其他方位),并且对这里所使用的空间相对描述作出相应解释。36.此外,需要说明的是,使用“第一”、“第二”等词语来限定零部件,仅仅是为了便于对相应零部件进行区别,如没有另行声明,上述词语并没有特殊含义,因此不能理解为对本技术保护范围的限制。此外,尽管本技术中所使用的术语是从公知公用的术语中选择的,但是本技术说明书中所提及的一些术语可能是申请人按他或她的判断来选择的,其详细含义在本文的描述的相关部分中说明。此外,要求不仅仅通过所使用的实际术语,而是还要通过每个术语所蕴含的意义来理解本技术。37.应当理解,当一个部件被称为“在另一个部件上”、“连接到另一个部件”、“耦合于另一个部件”或“接触另一个部件”时,它可以直接在该另一个部件之上、连接于或耦合于、或接触该另一个部件,或者可以存在插入部件。相比之下,当一个部件被称为“直接在另一个部件上”、“直接连接于”、“直接耦合于”或“直接接触”另一个部件时,不存在插入部件。同样的,当第一个部件被称为“电接触”或“电耦合于”第二个部件,在该第一部件和该第二部件之间存在允许电流流动的电路径。该电路径可以包括电容器、耦合的电感器和/或允许电流流动的其它部件,甚至在导电部件之间没有直接接触。38.本发明的一实施例提出了一种基于sql语句的报表查询方法,可以有效提升查询速率,提升系统稳定性。39.如图1所示,是该实施例中基于sql语句的报表查询方法10(以下简称“查询方法10”)的流程示意图。本技术中图1使用了流程图用来说明根据本技术的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。40.根据图1,查询方法10具体包括如下的步骤。41.步骤11为接收多个报表查询请求,并获取每个报表查询请求产生的原始sql语句。42.步骤12为根据合并规则将多个报表查询请求对应的多个原始sql语句在预设时间内完成合并,以生成一个或多个查询sql语句。更具体的,在步骤12中,合并规则包括将多个原始sql语句中的关键词select和关键词groupby作为合并标识的第一合并规则。43.具体来说,将关键词select和关键词groupby作为合并标识意味着在特定情况下将关键词select和关键词groupby之后字段作为合并对象。示例性的,在这样的实施例中,关键词select之后字段包括聚合函数和查询字段,且该查询字段与该关键词groupby之后字段相同,则第一合并规则具体可以是当多个原始sql语句中的关键词from之后字段以及关键词where之后字段相同、而关键词groupby之后字段不同,则将多个原始sql语句中的关键词select之后字段和关键词groupby之后字段分别合并。44.示例性的,如第一条原始sql语句为:45.selectsum(a),count(b),c,dfromtable01groupbyc,dwhereid》10046.且第二条原始sql语句为:47.selectsum(a),count(b),g,hfromtable01groupbyg,hwhereid》10048.对比上述两条原始sql语句可以看出,在这两条sql语句中,select之后字段分别包含sum和count两种聚合函数且均为相同的sum(a)和count(b)。进一步,第一条原始sql语句中select之后字段中的查询字段c,d与关键词groupby之后字段c,d相同;第二条原始sql语句中select之后字段中的查询字段g,h与关键词groupby之后字段g,h也是相同的。则按照上述的第一合并规则,将上述两条sql语句进行合并后的查询sql语句为:49.selectsum(a),count(b),c,d,g,hfromtable01groupbyc,d,g,hwhereid》100。50.可变的,在一些特定的场景中,上述原始sql语句中的关键词select之后字段中的聚合函数也可以不同,则对关键词select之后字段和关键词groupby之后字段同时进行合并。51.例如,第一条原始sql语句为:52.selectsum(a),count(b),c,dfromtable01groupbyc,dwhereid》10053.第二条原始sql语句为:54.selectsum(e),max(f),g,hfromtable01groupbyg,hwhereid》10055.则采用上述第一合并规则合并后的查询sql语句为:56.selectsum(a),count(b),sum(e),max(f),c,d,g,hfromtable01groupbyc,d,g,hwhereid》10057.在此基础上优选地,在本发明的一些实施例中,步骤12中的合并规则还包括仅将多个原始sql语句中的关键词select作为合并标识的第二合并规则。相似的,仅将关键词select作为合并标识意味着在特定情况下仅将关键词select之后字段进行合并。示例性的,第二合并规则可以是当多个原始sql语句中的关键词from之后字段以及关键词where之后字段相同、而关键词select之后字段不同,则将关键词select之后字段合并。58.下面对上述第二合并规则进行举例。59.第一条原始sql语句为:60.selectsum(a),count(b)fromtable01whereid》10;61.第二条原始sql语句为:62.selectcount(c),avg(d)fromtable01whereid》10;63.通过上述第二合并规则合并后的查询sql语句为:64.selectsum(a),count(b),count(c),avg(d)fromtable01whereid》10。65.可以理解的是,上述不同的例子仅仅示出了一种可以合并的情况以及在该情况下对具有相似之处的sql语句合并的方式,但是本发明不以此为限。需要提出的是,上述的不同合并规则均是基于不同场景下的实际报表查询请求的需要而设定的,其中,将多个原始sql语句中的关键词select和关键词groupby作为合并标识的第一合并规则、以及仅将多个原始sql语句中的关键词select作为合并标识的第二合并规则均可以适用于不同的应用场景,特别是在具有较多聚合信息或查询列信息较为复杂的实施例中,采用上述的合并规则可以有效的提升查询速率。66.根据图1进一步的,步骤13为根据一个或多个查询sql语句执行多个报表查询请求。仍以上述的举例为例,如在上述步骤11中接收到了两个报表查询请求(分别为请求1和请求2),此两个请求分别对应第一条原始sql语句和第二条原始sql语句。通过步骤12中将该第一条原始sql语句和该第二条原始sql语句合并后得到了查询sql语句,则在此步骤13中,根据该查询sql语句在数据库中完成包含了请求1和请求2的查询请求。明显地,与请求1和请求2分别通过各自的原始sql语句查询相比,通过一条合并后的查询sql语句进行查询,减少了执行报表查询请求的步骤13中所需要处理的sql语句的数量。67.另一方面优选地,在本发明的一些实施例中,为了更好的完成上述步骤12中的合并操作,在图1示出的步骤11~13的基础上,在执行完步骤11获取每个报表查询请求产生的原始sql语句之后,根据合并规则将多个报表查询请求对应的多个原始sql语句在预设时间内完成合并,以生成一个或多个查询sql语句的步骤具体包括将与多个报表查询请求对应的多个原始sql语句分别转化为原始java模型实例,并根据合并规则将与多个原始sql语句对应的多个原始java模型实例合并,以生成一个或多个查询java模型实例,并将一个或多个查询java模型实例解析以获得一个或多个查询sql语句。68.具体来说,采用java模型封装的实施例中,原始java模型实例中包括查询列信息、表信息、条件信息、聚合信息、排序信息和/或分页信息,其中,查询列信息为多个原始sql语句中的关键词select之后字段,表信息为多个原始sql语句中的关键词from之后字段,条件信息为多个原始sql语句中的关键词where之后字段,聚合信息为多个原始sql语句中的关键词groupby之后字段,排序信息为多个原始sql语句中的关键词orderby之后字段,分页信息为多个原始sql语句中的关键词limit之后字段。通过java模型封装的方式,可以使得参照图1的步骤12中对多个sql语句进行合并的操作更加方便和有效的完成。69.需要说明的是,与现有技术一些通过sql语句完成查询请求的方案不同的是,本发明中对多个sql语句进行合并的操作被设定为在很短的时间内完成。通过在很短的时间内完成多个sql语句的合并,从用户的角度即可以认为是同时完成了多个sql语句的合并。示例性的,在本发明的一些实施例中,参照图1的步骤12中涉及的预设时间的范围为5~15毫秒,从而可以对多个原始sql语句进行实时的合并,以有效的提升系统的查询效率。70.如图2所示,本发明的另一方面还提出了一种基于sql语句的报表查询系统20(以下简称“查询系统20”),具体包括请求接收模块21、合并模块22和sql执行引擎23。71.具体的,请求接收模块21配置为接收多个报表查询请求,并获取每个报表查询请求产生的原始sql语句。合并模块22配置为根据合并规则将多个报表查询请求对应的多个原始sql语句在预设时间内完成合并,以生成一个或多个查询sql语句,其中,合并规则包括将多个原始sql语句中的关键词select和关键词groupby作为合并标识的第一合并规则。sql执行引擎23配置为根据一个或多个查询sql语句执行多个报表查询请求。72.优选地,在本发明的包括图2的实施例中,合并模块22中的合并规则还包括仅将多个原始sql语句中的关键词select作为合并标识的第二合并规则。73.进一步的,在本发明的包括图2的实施例中,合并模块22还配置为在获取每个报表查询请求产生的原始sql语句之后,将与多个报表查询请求对应的多个原始sql语句分别转化为原始java模型实例,并根据合并规则将与多个原始sql语句对应的多个原始java模型实例合并,以生成一个或多个查询java模型实例,并将一个或多个查询java模型实例解析以获得一个或多个查询sql语句。74.上述参照图2所示的查询系统20可以有效提升查询速率,提升系统稳定性。示例性的,图2示出的查询系统20可以适用参照图1的查询方法10。更多的关于图2所示的查询系统20的细节可以参考上述根据图1对查询方法10的说明,在此不再赘述。75.为了更好的理解本发明的上述参照图1和图2说明的基于sql语句的报表查询方法和系统,下面根据图3a和图3b对于本发明的技术效果做出进一步展示。如图3a所示,在现有技术中,用户对于同一张报表可能同时提出多个请求、或者用户对于多张报表同时提出一个或多个查询请求,这些应用场景都涉及多个sql语句的处理需求。参照图3a举例来说,用户同时提出了5个查询请求,每个查询请求对应一个sql语句,分别展示为sql1~5,通常地,这5个查询请求均来自于同一张报表。根据现有技术的方式,完成用户此次提出的5个查询请求需要在sql执行引擎中同时处理5条sql语句。76.相比之下,参照图3b,面对同样的查询请求1~5,采用本发明的上述查询方法10和/或查询系统20后,查询请求1~5对应的sql1~5的sql语句会先根据合并规则在预设时间内完成合并,从而生成了查询sql语句sqla和sqlb,具体的合并规则在上文中已经详细说明,在此不再赘述。通过图3a和图3b的对比可以明显的看出,采用了本发明的基于sql语句的报表查询方法和系统后,sql执行引擎的压力可以明显地减少,从而有效提升查询速率,提升系统稳定性。77.本发明的一实施例还提出了一种如图4所示的基于sql语句的报表查询系统40。根据图4,基于sql的报表查询系统40可包括内部通信总线41、处理器(processor)42、只读存储器(rom)43、随机存取存储器(ram)44、以及通信端口45。当应用在个人计算机上时,基于sql的报表查询系统40还可以包括硬盘46。78.内部通信总线41可以实现基于sql语句的报表查询系统40组件间的数据通信。处理器42可以进行判断和发出提示。在一些实施例中,处理器42可以由一个或多个处理器组成。通信端口45可以实现基于sql语句的报表查询系统40与外部的数据通信。在一些实施例中,基于sql语句的报表查询系统40可以通过通信端口45从网络发送和接受信息以及数据。79.基于sql语句的报表查询系统40还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘46,只读存储器(rom)43和随机存取存储器(ram)44,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器42所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给用户设备,在用户界面上显示。80.除此之外,本发明另一方面还提出了一种存储有计算机程序代码的计算机可读介质,计算机程序代码在由处理器执行时实现上述的基于sql语句的报表查询方法。81.上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述发明披露仅仅作为示例,而并不构成对本技术的限定。虽然此处并没有明确说明,本领域技术人员可能会对本技术进行各种修改、改进和修正。该类修改、改进和修正在本技术中被建议,所以该类修改、改进、修正仍属于本技术示范实施例的精神和范围。82.同时,本技术使用了特定词语来描述本技术的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本技术至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本技术的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。83.本技术的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理器件(dapd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器或者其组合。此外,本技术的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,压缩盘cd、数字多功能盘dvd……)、智能卡以及闪存设备(例如,卡、棒、键驱动器……)。84.计算机可读介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。85.同理,应当注意的是,为了简化本技术披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本技术实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本技术对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。86.一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本技术一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。87.虽然本技术已参照当前的具体实施例来描述,但是本
技术领域
:中的普通技术人员应当认识到,以上的实施例仅是用来说明本技术,在没有脱离本技术精神的情况下还可作出各种等效的变化或替换,因此,只要在本技术的实质精神范围内对上述实施例的变化、变型都将落在本技术的权利要求书的范围内。当前第1页12当前第1页12
再多了解一些

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

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

相关文献