CN108804554B - 一种数据库查询方法、装置、服务器和存储介质 - Google Patents
一种数据库查询方法、装置、服务器和存储介质 Download PDFInfo
- Publication number
- CN108804554B CN108804554B CN201810493634.3A CN201810493634A CN108804554B CN 108804554 B CN108804554 B CN 108804554B CN 201810493634 A CN201810493634 A CN 201810493634A CN 108804554 B CN108804554 B CN 108804554B
- Authority
- CN
- China
- Prior art keywords
- filtering condition
- filtering
- value
- condition
- constant
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库查询方法、装置、服务器和存储介质,该方法包括:接收SQL语句,并对SQL语句进行语法识别获取SQL语句所包含的过滤条件;在该过滤条件满足预设过滤条件并且该过滤条件限定于单表上时,获取过滤条件的过滤值;确定包括常量或常量表达式的过滤值为目标过滤值,并创建与目标过滤值相对应的常量表操作符;基于该常量表操作符生成执行计划树,并结合目标过滤值执行该执行计划树。采用上述技术方案优化了数据库的查询方法,提高了数据库的查询效率,增强了用户的使用体验。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种数据库查询方法、装置、服务器和存储介质。
背景技术
数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。随着大数据时代的到来,数据库经常需要在海量数据中选出满足特定需求的数据来完成查询操作。
现有技术中,在采用结构化查询语言(Structured Query Language,SQL)对关系数据库进行数据的查询操作时,常常会采用指定范围(IN)布尔表达式形成的IN过滤条件进行查询或者采用逻辑或(OR)布尔表达式形成的OR过滤条件进行查询。
然而,在数据库管理系统中,上述两种布尔表达式的处理方式都是由单独的指令对数据表中的记录进行逐一判断,采用上述任意一种处理方式对数据进行处理的效率较低。
发明内容
本发明提供了一种数据库查询方法、装置、服务器和存储介质,以实现在采用IN过滤条件或者OR过滤条件进行数据查询时,能够提高数据查询效率。
第一方面,本发明实施例提供了一种数据库查询方法,该方法包括:
接收SQL语句,并对所述SQL语句进行语法识别,获取所述SQL语句中的过滤条件;
若所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上,则获取所述过滤条件的过滤值;其中,预设过滤条件包括指定范围过滤条件或者逻辑或过滤条件;
确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符;
基于所述常量表操作符生成执行计划树,并结合所述目标过滤值执行所述执行计划树。
第二方面,本发明实施例还提供了一种数据库查询装置,该装置包括:
过滤条件获取模块,用于接收SQL语句,并对所述SQL语句进行语法识别,获取所述SQL语句中的过滤条件;
过滤值获取模块,用于在所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上时,获取所述过滤条件的过滤值;其中,预设过滤条件包括指定范围过滤条件或者逻辑或过滤条件;
操作符创建模块,用于确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符;
计划树执行模块,用于基于所述常量表操作符生成执行计划树,并结合所述目标过滤值执行所述执行计划树。
第三方面,本发明实施例还提供了一种服务器,包括输入装置,该服务器还包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任一实施例所提供的一种数据库查询方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任一实施例所提供的一种数据库查询方法。
本发明通过接收SQL语句,并对SQL语句进行语法识别获取SQL语句所包含的过滤条件;在该过滤条件满足预设过滤条件并且该过滤条件限定于单表上时,获取过滤条件的过滤值;确定包括常量或常量表达式的过滤值为目标过滤值,并创建与目标过滤值相对应的常量表操作符;基于该常量表操作符生成执行计划树,并结合目标过滤值执行该执行计划树。采用上述技术方案解决了采用IN过滤条件或者OR过滤条件进行数据查询时查询效率低的技术问题,优化了数据库的查询方法,提高了数据库的查询效率,增强了用户的使用体验。
附图说明
图1是本发明实施例一中的一种数据库查询方法的流程示意图;
图2A是本发明实施例二中的一种数据库查询方法的流程示意图;
图2B是本发明实施例二中的另一种数据库查询方法的流程示意图;
图3是本发明实施例三中一种数据库查询方法的流程示意图;
图4是本发明实施例四中的一种数据库查询装置的结构示意图;
图5是本发明实施例五中的一种服务器的硬件结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据库查询方法的流程示意图。本实施例可适用于采用IN过滤条件或者OR过滤条件对数据库中的内容进行查询的情况,该方法可以由数据库查询装置来执行,该装置由软件和/或硬件实现并具体配置于服务器上。该数据库查询方法包括以下步骤:
S110、接收SQL语句,并对所述SQL语句进行语法识别,获取所述SQL语句中的过滤条件。
其中,过滤条件用于对数据库的数据进行查询或检索时指定搜索条件。过滤条件包括匹配检查、范围值检查、空值检查、操作符检查和通配符检查中的至少一个。
示例性地,匹配检查可以是“select column from table where column=N”中where子句所包含的相等测试;匹配检查还可以是“select column from table wherecolumn<>N”或者“select column from table where column!=N”中where子句所包含不匹配检查。示例性地,范围值检查可以是“select column from table where columnbetween X and Y”中通过between操作符限定的“大于等于X并小于等于Y”的特定范围的检查。示例性地,空值检查可以是“select column from table where column1is null”中的is null子句。示例性地,操作符检查可以是由AND操作符、OR操作符、IN操作符以及NOT操作符中的至少一个所形成的过滤条件。示例性地,通配符检查可以是有百分号通配符和/或下划线通配符所形成的过滤条件。
服务器在接收到SQL语句后,会对接收到的SQL语句进行语法识别,以判断接收到的SQL语句是否存在语法错误。通过语法识别的识别结果,服务器可以获取到SQL语句中的过滤条件。
S120、若所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上,则获取所述过滤条件的过滤值。
其中,预设过滤条件包括指定范围(IN)过滤条件或者可以转换为IN过滤条件的其他过滤条件。示例性地,预设过滤条件可以包括逻辑或(OR)过滤条件。
服务器判断获取到的过滤条件是否为IN过滤条件或者可转化为IN过滤条件的其他过滤条件,并且过滤条件限定于单表上。如果过滤条件是IN过滤条件或者可转化为IN过滤条件的其他过滤条件,服务器将获取过滤条件中的过滤值。
示例性地,“select*from t1,t2where t1.c1=1or t2.d1=11”该SQL语句中的过滤条件为可转换为IN过滤条件的OR过滤条件,其中OR过滤条件限定于t1和t2这两个数据表上,因此过滤条件满足预设过滤条件,但是该过滤条件并非限定于单表上。示例性地,“select*from t1wherec1=1or c1=11”该SQL语句中的过滤条件为可转换为IN过滤条件的OR过滤条件,其中OR过滤条件限定于t1这一个数据表上,因此过滤条件满足预设过滤条件且限定于单表上。
S130、确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符。
其中,常量表达式是指表达式中仅包含常量并且计算值不会发生改变的表达式。其中,常量表操作符是指能够直接对常量表中的常量数据进行查询操作的自定义的操作符。
服务器将过滤条件中为常量或常量表达式的过滤值确定为目标过滤值,并将为这些目标过滤值创建一个常量表操作符,并后续基于该常量表操作符创建一对应的常量表,该常量表用于加载各目标过滤值计算后的常量值。
示例性地,“select*from t1where c1=1or c1=1+1or c1=3or c1=4”该SQL语句中“c1=1+1”即为常量表达式。服务器将过滤值“1”、“1+1”、“3”和“4”确定为目标过滤值,并创建一个constv操作符,将原来的SQL语句转化为“select*from t1,constv(col1)wherec1=constv.col1”。其中,constv表就是常量表,constv表中包含col1列,col1列的列值包括“1”,“2”,“3”和“4”。
S140、基于所述常量表操作符生成执行计划树,并结合所述目标过滤值执行所述执行计划树。
其中,执行计划树是在解析SQL语句时,选择数据库对象的访问路径和执行过程时的产物。执行计划树的每个节点由一个操作符构成。在执行计划树的执行阶段,数据从执行计划树的叶子结点经执行计划树各层次节点的处理,流向根节点,生成执行结果反馈给用户。
示例性地,“select*from t1where c1=1or c1=1+1or c1=3or c1=4”SQL语句的执行计划树为:
1)SELECT
2)|--SLCT(OR过滤条件)
3)|--------SSCN(扫描表)
将上述SQL语句转化为“select*from t1,constv(col1)where c1=constv.col1”之后,所生成的执行计划树为:
1)SELECT
2)|--JOIN(两表连接)
3)|--------CONSTV(常量表)
4)|--------SSCN(扫描表)
相应的,服务器会在执行计划树的节点3)中完成常量表操作符相应的功能。
需要说明的是,基于常量表操作符生成执行计划树之后,可根据现有技术中两表连接操作的步骤执行相应的执行计划树。其中,两表连接的具体连接方式可以由服务器设定为默认值或者通过代价估算选择最优连接方式。其中,连接方式可以是嵌套循环连接、哈希连接或者归并连接等。
本发明实施例通过接收SQL语句,并对SQL语句进行语法识别获取SQL语句所包含的过滤条件;在该过滤条件满足预设过滤条件并且该过滤条件限定于单表上时,获取过滤条件的过滤值;确定包括常量或常量表达式的过滤值为目标过滤值,并创建与目标过滤值相对应的常量表操作符;基于该常量表操作符生成执行计划树,并结合目标过滤值执行该执行计划树。采用上述技术方案解决了采用IN过滤条件或者OR过滤条件进行数据查询时查询效率低的技术问题,优化了数据库的查询方法,提高了数据库的查询效率,增强了用户的使用体验。
实施例二
图2A是本发明实施例二提供的一种数据库查询方法的流程示意图。本实施例在上述各实施例的基础上,进行了进一步的细化和追加。
在上述各实施例的技术方案的基础上,进一步地,将特征“若所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上,则获取所述过滤条件的过滤值”细化为“若所述过滤条件满足所述指定范围过滤条件,则判断所述过滤条件所包含的待过滤表及待过滤列是否相同;若所述待过滤表相同且所述待过滤列相同,则获取所述过滤条件所包含的各条件值作为过滤值”以丰富预设过滤条件为IN过滤条件时的过滤值获取方式。
在上述各实施例的技术方案的基础上,进一步地,在特征“创建与所述目标过滤值相对应的常量表操作符”之后,在特征“基于所述常量表操作符生成执行计划树”之前,追加“创建常量表,并通过代价估算确定所述常量表与所述过滤条件所限定的单表之间的连接方式”;相应的,将特征“基于所述常量表操作符生成执行计划树”替换为“基于所述常量表操作符以及所述连接方式生成执行计划树”,以选取最优连接方式。
如图2A所示的数据库查询方法,包括:
S210、接收SQL语句,并对所述SQL语句进行语法识别,获取所述SQL语句中的过滤条件。
S221A、判断所述过滤条件是否满足所述指定范围过滤条件;如果是,则执行S222A。
S222A、判断所述过滤条件所包含的待过滤表及待过滤列是否相同;如果是,则执行S223A。
S223A、获取所述过滤条件所包含的各条件值作为过滤值。
示例性地,“select*from t1where c1in(1,2,3,4)”语句中的过滤条件为IN过滤条件,该过滤条件中的左值c1为单表t1的列,因此可以将条件值“1”,“2”,“3”和“4”作为该过滤值。
S230、确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符。
由于过滤值“1”,“2”,“3”和“4”均为常量,因此各过滤值即为目标过滤值。服务器会创建与所有的目标过滤值相对应的一个常量表操作符。也即,目标过滤值与常量表操作符是多对一的关系。
S240、创建常量表,并通过代价估算确定所述常量表与所述过滤条件所限定的单表之间的连接方式。
其中,代价估算是某个路径的花费,属于物理优化范畴。路径可以是两个关系连接得到的路径。
服务器创建与常量表操作符名称相对应的常量表,并通过设定的代价估算函数估算常量表与过滤条件所在表也即扫描表之间采用不同的连接方式的总代价,并选取代价最小的连接方式作为常量表与过滤条件所述单表直接的目标连接方式。
S250、基于所述常量表操作符以及所述连接方式生成执行计划树,并结合所述目标过滤值执行所述执行计划树。
服务器基于常量表操作符以及确定的目标连接方式生成执行计划树,并将各目标过滤值所对应的常量值加载到常量表中。常量表以及过滤条件所述单表中的各数据经执行计划树的各层次节点的处理,流向根节点,生成相应的执行结果。
本发明实施例通过细化过滤值获取步骤以丰富预设过滤条件为IN过滤条件时的数据库查询方案;通过追加连接方式确定步骤以选取最优连接方式。采用上述技术方案解决了采用IN过滤条件进行数据查询时查询效率低的技术问题,优化了数据库的查询方法,提高了数据库的查询效率,增强了用户的使用体验。
在图2A所示的数据库查询方法的基础上,图2B示意性给出了另一种数据库查询方法,仅将图2A中的预设过滤条件为IN过滤条件时的过滤值获取步骤S221A~S223A替换为S221B~S223B,以细化预设过滤条件为OR过滤条件时的过滤值获取方案。
S221B、判断所述过滤条件是否满足所述逻辑或过滤条件,若是,则执行S222B;
S222B、判断所述过滤条件所包含的待过滤表及待过滤列是否相同;若是,则执行S223B;
S223B、获取所述过滤条件中等值过滤的各条件值作为过滤值。
示例性地,“select*from t1where c1=1or c1=2or c1=3or c1>4”该SQL语句中的过滤条件满足OR过滤条件,同时待过滤表均为数据表t1,待过滤列均为数据表t1的c1列。但是,由于“c1>4”不是等值过滤,因此仅将满足等值过滤的过滤分支“c1=1”,“c1=2”以及“c1=3”的条件值“1”,“2”以及“3”作为过滤值。
本发明实施例通过细化过滤值获取步骤以丰富预设过滤条件为OR过滤条件时的数据库查询方案;通过追加连接方式确定步骤以选取最优连接方式。采用上述技术方案解决了采用OR过滤条件进行数据查询时查询效率低的技术问题,优化了数据库的查询方法,提高了数据库的查询效率,增强了用户的使用体验。
在上述各实施例的技术方案的基础上,进一步地,所述结合所述目标过滤值执行所述执行计划树,包括:将所述目标过滤值加载至所述常量表;若所述连接方式为归并连接,则对加载后的常量表中的数据进行排序;基于排序后的常量表,执行所述执行计划树。
其中,归并连接又称排序合并连接,该连接方式中并不存在驱动表,因此需要对加载后的常量表以及过滤条件所在单表中的数据进行排序,然后再进行连接。
本发明实施例的技术方案通过细化执行计划树的执行步骤,以完善连接方式具体为归并连接时的执行计划树的执行方式。
在上述各实施例的技术方案的基础上,进一步地,在所述将所述目标过滤值加载至所述常量表之后,还包括:去除所述常量表中的重复数据。
示例性地,可以通过将各行数据逐一对比并剔除相同数据的方式去除常量表中的重复数据;还可以通过将常量表排序,并将排序后的常量表相邻行数据比对并剔除相同数据的方式去除常量表中的重复数据。
本发明实施例的技术方案通过细化执行计划树的执行步骤,以避免过滤之后的结果错误。
实施例三
图3是本发明实施例三提供的一种数据库查询方法的流程示意图。在上述各实施例的技术方案的技术上,本实施例提供了一种优选的实施方式。具体的,该数据库查询方法包括:
S310、接收SQL语句,并对所述SQL语句进行语法识别,获取所述SQL语句中的过滤条件;
S321、判断所述过滤条件是否满足所述指定范围过滤条件;若是,则执行S322;若否,则执行S323;
S322、判断所述过滤条件所包含的待过滤表及待过滤列是否相同;若是,则执行S330A;若否,则执行S323;
S330A、获取所述过滤条件所包含的各条件值作为过滤值;跳转执行S340;
S323、判断所述过滤条件是否满足所述逻辑或过滤条件;若是,则执行S324;若否,则执行S390C;
S324、判断所述过滤条件所包含的待过滤表及待过滤列是否相同;若是,则执行S330B;若否,则执行S390C;
S330B、获取所述过滤条件中等值过滤的各条件值作为过滤值;
S340、确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符;
S350、创建常量表,并通过代价估算确定所述常量表与所述过滤条件所限定的单表之间的连接方式;
S360、基于所述常量表操作符生成执行计划树;
S370、将所述目标过滤值加载至所述常量表,并去除所述常量表中的重复数据。
S380、判断所述连接方式是否为归并连接;若是,则执行S390A;否则,执行S390B;
S390A、对加载后的常量表中的数据进行排序,并基于排序后的常量表,执行所述执行计划树。
S390B、结合所述目标过滤值执行所述执行计划树。
S390C、按照所述SQL语句进行数据查询。
需要说明的是,对IN过滤条件的判断可以位于OR过滤条件的判断之前,也可以位于OR过滤条件的判断之后。也即,可以将S321与S323内容对换,并相应的将S322和S324对换,将S330A与S330B对换。
实施例四
图4是本发明实施例四提供的一种数据库查询装置的结构示意图,本实施例可适用于采用IN过滤条件或者OR过滤条件对数据库中的内容进行查询的情况,该数据库查询装置包括:过滤条件获取模块410,过滤值获取模块420,操作符创建模块430以及计划树执行模块440。
其中,过滤条件获取模块410,用于接收SQL语句,并对所述SQL语句进行语法识别,获取所述SQL语句中的过滤条件;
过滤值获取模块420,用于在所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上时,获取所述过滤条件的过滤值;其中,预设过滤条件包括指定范围过滤条件或者逻辑或过滤条件;
操作符创建模块430,用于确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符;
计划树执行模块440,用于基于所述常量表操作符生成执行计划树,并结合所述目标过滤值执行所述执行计划树。
本发明实施例通过过滤条件获取模块410接收SQL语句,并对SQL语句进行语法识别获取SQL语句所包含的过滤条件;通过过滤值获取模块420在该过滤条件满足预设过滤条件并且该过滤条件限定于单表上时,获取过滤条件的过滤值;通过操作符创建模块430确定包括常量或常量表达式的过滤值为目标过滤值,并创建与目标过滤值相对应的常量表操作符;通过计划树执行模块440基于该常量表操作符生成执行计划树,并结合目标过滤值执行该执行计划树。采用上述技术方案解决了采用IN过滤条件或者OR过滤条件进行数据查询时查询效率低的技术问题,优化了数据库的查询方法,提高了数据库的查询效率,增强了用户的使用体验。
在上述各实施例的技术方案的基础上,进一步地,所述过滤值获取模块420,包括:
第一判断单元,用于在所述过滤条件满足所述指定范围过滤条件时,判断所述过滤条件所包含的待过滤表及待过滤列是否相同;
第一获取单元,用于在所述待过滤表相同且所述待过滤列相同时,获取所述过滤条件所包含的各条件值作为过滤值。
在上述各实施例的技术方案的基础上,进一步地,所述过滤值获取模块420,包括:
第二判断单元,用于在所述过滤条件满足所述逻辑或过滤条件时,判断所述过滤条件所包含的待过滤表及待过滤列是否相同;
第二获取单元,用于在所述待过滤表相同且所述待过滤列相同时,获取所述过滤条件中等值过滤的各条件值作为过滤值。
在上述各实施例的技术方案的基础上,进一步地,所述装置,还包括:
连接方式确定模块,用于创建常量表,并通过代价估算确定所述常量表与所述过滤条件所限定的单表之间的连接方式;
相应的,计划树执行模块440,包括:
执行计划树生成单元,用于基于所述常量表操作符以及所述连接方式生成执行计划树。
在上述各实施例的技术方案的基础上,进一步地,所述计划树执行模块440,包括:
加载单元,用于将所述目标过滤值加载至所述常量表;
排序单元,用于在所述连接方式为归并连接时,对加载后的常量表中的数据进行排序;
执行单元,用于基于排序后的常量表,执行所述执行计划树。
在上述各实施例的技术方案的基础上,进一步地,所述计划树执行模块440,还包括:
去重单元,用于去除所述常量表中的重复数据。
上述数据库查询装置可执行本发明任意实施例所提供的数据库查询方法,具备执行数据库查询方法相应的功能模块和有益效果。
实施例五
图5为本发明实施例五提供的一种服务器的硬件结构示意图,该服务器包括输入装置510、处理器520以及存储装置530。
其中,输入装置510,用于接收SQL语句;
一个或多个处理器520;
存储装置530,用于存储一个或多个程序。
图5中以一个处理器520为例,该服务器中的输入装置510可以通过总线或其他方式与处理器520以及存储装置530相连,且处理器520和存储装置530存储装置530也通过总线或其他方式连接,图5中以通过总线连接为例。
在本实施例中,服务器中的处理器520可以对输入装置510接收的SQL语句进行语法识别,获取SQL语句中的过滤条件;还可以在所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上时,获取所述过滤条件的过滤值;还可以确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符;还可以基于所述常量表操作符生成执行计划树,并结合所述目标过滤值执行所述执行计划树。
该服务器中的存储装置530作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例中数据库查询方法对应的程序指令/模块(例如,附图4所示的过滤条件获取模块410、过滤值获取模块420、操作符创建模块430以及计划树执行模块440)。处理器520通过运行存储在存储装置530中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的数据库查询方法。
存储装置530可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储数据等(如上述实施例中的SQL语句、过滤条件、预设过滤条件、过滤值、目标过滤值以及执行计划树等)。此外,存储装置530可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置530可进一步包括相对于处理器520远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
此外,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被数据库查询装置执行时实现本发明实施提供的数据库查询方法,该方法包括:接收结构化查询语言SQL语句,并对所述SQL语句进行语法识别,获取所述SQL语句中的过滤条件;若所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上,则获取所述过滤条件的过滤值;其中,预设过滤条件包括指定范围过滤条件或者逻辑或过滤条件;确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符;基于所述常量表操作符生成执行计划树,并结合所述目标过滤值执行所述执行计划树。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种数据库查询方法,其特征在于,包括:
接收结构化查询语言SQL语句,并对所述SQL语句进行语法识别,获取所述SQL语句中的过滤条件;
若所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上,则获取所述过滤条件的过滤值;其中,预设过滤条件包括指定范围过滤条件或者逻辑或过滤条件;
确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符;
创建常量表,并通过代价估算确定所述常量表与所述过滤条件所限定的单表之间的连接方式;
基于所述常量表操作符以及所述连接方式生成执行计划树,并结合所述目标过滤值执行所述执行计划树。
2.根据权利要求1所述的方法,其特征在于,所述若所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上,则获取所述过滤条件的过滤值,包括:
若所述过滤条件满足所述指定范围过滤条件,则判断所述过滤条件所包含的待过滤表及待过滤列是否相同;
若所述待过滤表相同且所述待过滤列相同,则获取所述过滤条件所包含的各条件值作为过滤值。
3.根据权利要求1所述的方法,其特征在于,所述若所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上,则获取所述过滤条件的过滤值,包括:
若所述过滤条件满足所述逻辑或过滤条件,则判断所述过滤条件所包含的待过滤表及待过滤列是否相同;
若所述待过滤表相同且所述待过滤列相同,则获取所述过滤条件中等值过滤的各条件值作为过滤值。
4.根据权利要求1所述的方法,其特征在于,所述结合所述目标过滤值执行所述执行计划树,包括:
将所述目标过滤值加载至所述常量表;
若所述连接方式为归并连接,则对加载后的常量表中的数据进行排序;
基于排序后的常量表,执行所述执行计划树。
5.根据权利要求4所述的方法,其特征在于,在所述将所述目标过滤值加载至所述常量表之后,还包括:
去除所述常量表中的重复数据。
6.一种数据库查询装置,其特征在于,包括:
过滤条件获取模块,用于接收SQL语句,并对所述SQL语句进行语法识别,获取所述SQL语句中的过滤条件;
过滤值获取模块,用于在所述过滤条件满足预设过滤条件并且所述过滤条件限定于单表上时,获取所述过滤条件的过滤值;其中,预设过滤条件包括指定范围过滤条件或者逻辑或过滤条件;
操作符创建模块,用于确定包括常量或常量表达式的过滤值为目标过滤值,并创建与所述目标过滤值相对应的常量表操作符;
连接方式确定模块,用于创建常量表,并通过代价估算确定所述常量表与所述过滤条件所限定的单表之间的连接方式;
计划树执行模块,用于基于所述常量表操作符以及所述连接方式生成执行计划树,并结合所述目标过滤值执行所述执行计划树。
7.根据权利要求6所述的装置,其特征在于,所述过滤值获取模块,包括:
第一判断单元,用于在所述过滤条件满足所述指定范围过滤条件时,判断所述过滤条件所包含的待过滤表及待过滤列是否相同;
第一获取单元,用于在所述待过滤表相同且所述待过滤列相同时,获取所述过滤条件所包含的各条件值作为过滤值。
8.一种服务器,其特征在于,包括输入装置,还包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一项所述的一种数据库查询方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一项所述的一种数据库查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810493634.3A CN108804554B (zh) | 2018-05-22 | 2018-05-22 | 一种数据库查询方法、装置、服务器和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810493634.3A CN108804554B (zh) | 2018-05-22 | 2018-05-22 | 一种数据库查询方法、装置、服务器和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108804554A CN108804554A (zh) | 2018-11-13 |
CN108804554B true CN108804554B (zh) | 2021-03-05 |
Family
ID=64091343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810493634.3A Active CN108804554B (zh) | 2018-05-22 | 2018-05-22 | 一种数据库查询方法、装置、服务器和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108804554B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753520B (zh) * | 2019-01-28 | 2021-01-26 | 上海达梦数据库有限公司 | 半连接查询方法、装置、服务器及存储介质 |
CN110008238B (zh) * | 2019-03-12 | 2021-04-27 | 北京东方国信科技股份有限公司 | Nlj改进表连接方法及基于该改进方法的数据查询方法 |
CN111046066B (zh) * | 2019-12-09 | 2023-05-12 | 上海达梦数据库有限公司 | 远程数据库对象的优化方法、装置、设备及存储介质 |
CN111090804B (zh) * | 2019-12-12 | 2024-03-08 | 聚好看科技股份有限公司 | 数据过滤方法、装置及计算机存储介质 |
CN110990423B (zh) * | 2019-12-12 | 2023-04-18 | 上海达梦数据库有限公司 | Sql语句的执行方法、装置、设备和存储介质 |
CN112286958B (zh) * | 2020-11-16 | 2024-05-17 | 广州速威智能系统科技有限公司 | 数据库查询表达式的处理方法和系统 |
CN113553345B (zh) * | 2021-07-19 | 2024-09-03 | 北京东方国信科技股份有限公司 | 向量化数据库的查询方法及装置 |
CN113641701B (zh) * | 2021-10-13 | 2022-02-18 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、系统、异构加速平台及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075255A (zh) * | 2007-06-08 | 2007-11-21 | 北京神舟航天软件技术有限公司 | 去除sql查询语句恒条件的方法 |
CN103188094A (zh) * | 2011-12-28 | 2013-07-03 | 中国移动通信集团贵州有限公司 | 一种资源数据核查系统和方法 |
CN104462432A (zh) * | 2014-12-15 | 2015-03-25 | 成都英力拓信息技术有限公司 | 自适应的分布式计算方法 |
CN106202451A (zh) * | 2016-07-11 | 2016-12-07 | 浙江大华技术股份有限公司 | 一种数据查询方法及装置 |
CN106227799A (zh) * | 2016-07-21 | 2016-12-14 | 江和慧 | 一种基于分布式数据库的sql语句处理方法 |
CN106599259A (zh) * | 2016-12-21 | 2017-04-26 | 江苏省连云港工贸高等职业技术学校 | 一种快速访问sql数据库的系统 |
CN106845237A (zh) * | 2017-01-23 | 2017-06-13 | 北京安华金和科技有限公司 | 一种基于sql语句的sql注入风险评估方法 |
CN106897343A (zh) * | 2016-07-20 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 执行计划的查找方法、存储方法及装置 |
CN107704511A (zh) * | 2017-08-31 | 2018-02-16 | 星环信息科技(上海)有限公司 | 一种sql优化方法及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378253B2 (en) * | 2014-04-23 | 2016-06-28 | Mescal IT Systems, Ltd. | Database interface creation system and method |
US10127277B2 (en) * | 2015-07-31 | 2018-11-13 | International Business Machines Corporation | Outer join optimizations in database management systems |
-
2018
- 2018-05-22 CN CN201810493634.3A patent/CN108804554B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075255A (zh) * | 2007-06-08 | 2007-11-21 | 北京神舟航天软件技术有限公司 | 去除sql查询语句恒条件的方法 |
CN103188094A (zh) * | 2011-12-28 | 2013-07-03 | 中国移动通信集团贵州有限公司 | 一种资源数据核查系统和方法 |
CN104462432A (zh) * | 2014-12-15 | 2015-03-25 | 成都英力拓信息技术有限公司 | 自适应的分布式计算方法 |
CN106202451A (zh) * | 2016-07-11 | 2016-12-07 | 浙江大华技术股份有限公司 | 一种数据查询方法及装置 |
CN106897343A (zh) * | 2016-07-20 | 2017-06-27 | 阿里巴巴集团控股有限公司 | 执行计划的查找方法、存储方法及装置 |
CN106227799A (zh) * | 2016-07-21 | 2016-12-14 | 江和慧 | 一种基于分布式数据库的sql语句处理方法 |
CN106599259A (zh) * | 2016-12-21 | 2017-04-26 | 江苏省连云港工贸高等职业技术学校 | 一种快速访问sql数据库的系统 |
CN106845237A (zh) * | 2017-01-23 | 2017-06-13 | 北京安华金和科技有限公司 | 一种基于sql语句的sql注入风险评估方法 |
CN107704511A (zh) * | 2017-08-31 | 2018-02-16 | 星环信息科技(上海)有限公司 | 一种sql优化方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108804554A (zh) | 2018-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804554B (zh) | 一种数据库查询方法、装置、服务器和存储介质 | |
CN110515973B (zh) | 一种数据查询的优化方法、装置、设备及存储介质 | |
US7111025B2 (en) | Information retrieval system and method using index ANDing for improving performance | |
JP6964384B2 (ja) | 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム | |
EP1349081A1 (en) | Method and apparatus for querying relational databases | |
CN112100198B (zh) | 数据库sql语句优化方法、装置、设备及存储介质 | |
CN108681603B (zh) | 数据库中快速搜索树形结构数据的方法、存储介质 | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
JP2015515671A (ja) | 進化的な分析のためのシステム | |
CN112988782A (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
CN112199390A (zh) | 一种数据库中数据查询方法、装置、设备及存储介质 | |
CN111221852A (zh) | 基于大数据的混合查询处理方法及装置 | |
CN110019380B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
CN112732752A (zh) | 一种查询语句优化方法、装置、设备和存储介质 | |
EP1349082A1 (en) | Method and apparatus for querying relational databases | |
CN108073641B (zh) | 查询数据表的方法和装置 | |
CN110990423B (zh) | Sql语句的执行方法、装置、设备和存储介质 | |
CN106547877B (zh) | 基于6w业务逻辑模型的数据元智能标识解析方法 | |
CN110895529B (zh) | 结构化查询语言的处理方法及相关装置 | |
CN109753520B (zh) | 半连接查询方法、装置、服务器及存储介质 | |
CN110162574B (zh) | 数据重分布方式的确定方法、装置、服务器及存储介质 | |
CN115455057A (zh) | 数据库连接操作的执行方法、存储介质与计算机设备 | |
CN111221860A (zh) | 基于大数据的混合查询优化方法及装置 | |
CN113420023A (zh) | 一种数据处理方法、装置、电子设备及计算机存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |