一种数据查询方法及装置制造方法及图纸

技术编号:16500038 阅读:20 留言:0更新日期:2017-11-04 11:20
本发明专利技术实施例公开了一种数据查询方法及装置,该方法包括:接收数据查询请求,该数据查询请求包含查询条件,判断查询条件中是否包含预设运算符,若为是,则按照预设的查询条件优化规则,将查询条件变换为至少两个不包含预设运算符的子查询条件,根据子查询条件,从预设表中查询数据,根据查询到的数据,生成数据查询结果。应用本发明专利技术实施例,提高了数据库的数据查询性能,同时提高了数据查询速度。

Data query method and device

The embodiment of the invention discloses a data query method and device, the method comprises: receiving data query, the query request contains data query, the query is contained in the pre judgment operator, if yes, in accordance with the query optimization rules of default, will transform query query conditions for at least two less contains default operator, according to the query condition, query the data from the default table, according to the query data to generate data query results. By using the embodiment of the invention, the data inquiry performance of the database is improved, and the speed of data inquiry is improved.

【技术实现步骤摘要】
一种数据查询方法及装置
本专利技术涉及数据库
,特别涉及一种数据查询方法及装置。
技术介绍
当前有非常多的SQL(StructuredQueryLanguage,结构化查询语言)优化方法,如:谓词下推、常量折叠等。但这些方法都是非常通用的优化方法,并且偏向保守的优化方法,大多都只是在执行的计划上做较小程度的调整进而达到优化数据查询的目的。然而在实际应用中,数据查询中常常包含一些具体特征,对于这类数据查询,上述优化方法并不能对其进行优化,只能采用保守的方法来进行数据查询,如以下的SQL语句:select*fromA,Xwhere(A.a='a0'andX.x='x0')or(A.a='a1'andX.x='x1')在执行过程中,由于该语句中包含括号、and和or,SQL数据库并不能对其进行谓词下推或采用其他优化方法对其进行优化,因此,为了获得查询结果,会对表A和表X做一个笛卡尔积(Cartesianproduct)运算,然后在笛卡尔积运算的基础上,按照条件“(A.a='a0'andX.x='x0')or(A.a='a1'andX.x='x1)”进行过滤并得到需要的查询结果。根据上述方法,笛卡尔积运算产生的结果数为num(A)*num(X),其中,num(A)为表A的行数,num(X)为X表的行数。当表A和表X达到一定规模后,这个笛卡尔积运算的结果将是一个规模巨大的结果集合,并占用查询终端大量的内存,进而影响了数据库的数据查询性能,查询速度慢。
技术实现思路
本专利技术实施例公开了一种数据查询方法及装置,以提高数据库的数据查询性能,提高数据查询速度。为达到上述目的,本专利技术实施例公开了一种数据查询方法,所述方法包括步骤:接收数据查询请求,其中,所述数据查询请求包含查询条件;判断所述查询条件中是否包含预设运算符;若为是,则按照预设的查询条件优化规则,将所述查询条件变换为至少两个不包含所述预设运算符的子查询条件;根据所述子查询条件,从预设表中查询数据,其中,所述预设表,用于存储数据;根据查询到的数据,生成数据查询结果。在本专利技术的一种实现方式中,所述按照预设的查询条件优化规则,将所述查询条件变换为至少两个不包含所述预设运算符的子查询条件,包括:将所述查询条件设置为目标查询条件;以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件;在变换得到的目标子查询条件中不包含预设运算符的情况下,将不包含预设运算符的目标子查询条件确定为所述查询条件的一个子查询条件;在变换得到的目标子查询条件中包含预设运算符的情况下,将包含预设运算符的目标子查询条件设置为目标查询条件,返回所述以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件的步骤。在本专利技术的一种实现方式中,所述以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件,包括:以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件,并获得目标子查询条件之间的运算关系;所述根据查询到的数据,生成数据查询结果,包括:根据所述目标子查询条件之间的运算关系,确定查询到的数据间的运算关系;根据查询到的数据和所确定的运算关系,生成数据查询结果。在本专利技术的一种实现方式中,所述根据所述子查询条件,从预设表中查询数据,包括:根据预设表的数据索引,从所述预设表中获得满足所述子查询条件的数据。在本专利技术的一种实现方式中,所述预设的查询条件优化规则包括:谓词下推、常量折叠、布尔函数简化中的一种或多种。为达到上述目的,本专利技术实施例还公开了一种数据查询装置,所述装置包括:请求接收模块、运算符判断模块、条件变换模块、数据查询模块和结果生成模块;其中,所述请求接收模块,用于接收数据查询请求,其中,所述数据查询请求包含查询条件;所述运算符判断模块,用于判断所述查询条件中是否包含预设运算符,若为是,则触发所述条件变换模块;所述条件变换模块,用于按照预设的查询条件优化规则,将所述查询条件变换为至少两个不包含所述预设运算符的子查询条件;所述数据查询模块,用于根据所述子查询条件,从预设表中查询数据,其中,所述预设表,用于存储数据;所述结果生成模块,用于根据查询到的数据,生成数据查询结果。在本专利技术的一种实现方式中,所述条件变换模块,包括:第一条件设置子模块、条件变换子模块、条件确定子模块和第二条件设置子模块;其中,所述第一条件设置子模块,用于将所述查询条件设置为目标查询条件;所述条件变换子模块,用于以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件;所述子条件确定子模块,用于在变换得到的目标子查询条件中不包含预设运算符的情况下,将不包含预设运算符的目标子查询条件确定为所述查询条件的一个子查询条件;所述第二条件设置子模块,用于在变换得到的目标子查询条件中包含预设运算符的情况下,将包含预设运算符的目标子查询条件设置为目标查询条件,并触发所述条件变换子模块,以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件。在本专利技术的一种实现方式中,所述条件变换子模块,具体用于:以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件,并获得目标子查询条件之间的运算关系;所述结果生成模块,包括:运算关系确定子模块和结果生成子模块;其中,所述运算关系确定子模块,用于根据所述目标子查询条件之间的的运算关系,确定查询到的数据间的运算关系;所述结果生成子模块,用于根据查询到的数据和所确定的运算关系,生成数据查询结果。在本专利技术的一种实现方式中,所述数据查询模块,具体用于:根据预设表的数据索引,从所述预设表中获得满足所述子查询条件的数据。在本专利技术的一种实现方式中,所述预设的查询条件优化规则包括:谓词下推、常量折叠、布尔函数简化中的一种或多种。由上可知,在本专利技术实施例中,查询终端在接收到数据查询请求后,判断该数据查询请求中包含的查询条件中是否包含预设运算符,在包含预设运算符的情况下,按照预设的查询条件优化规则,将查询条件变换为至少两个不包含预设运算符的子查询条件,根据变换得到的子查询条件,从预设表中查询数据,根据查询到的数据,生成数据查询结果。因为,子查询条件中不包含预设运算符,这样在进行数据查询时,就可以避免因这些运算符而造成的大数据量的运算(例如笛卡尔积运算),进而避免占用查询终端大量的内存,提高了数据库的数据查询性能,进而提高了数据查询速度。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例提供的一种数据查询方法的流程示意图;图2为本专利技术实施例提供的另一种数据查询方法的流程示意图;图3(a)为一个SQL语句的逻辑计划树的结构示意图;图3(b)为一个SQL语句的物理计划树的结构示意图;图4(a)为本专利技术实施例提供的等价后的逻辑计划树的结构示意图;图4(b)为本专利技术实施例提供的等价后的物理计划本文档来自技高网...
一种数据查询方法及装置

【技术保护点】
一种数据查询方法,其特征在于,所述方法包括步骤:接收数据查询请求,其中,所述数据查询请求包含查询条件;判断所述查询条件中是否包含预设运算符;若为是,则按照预设的查询条件优化规则,将所述查询条件变换为至少两个不包含所述预设运算符的子查询条件;根据所述子查询条件,从预设表中查询数据,其中,所述预设表,用于存储数据;根据查询到的数据,生成数据查询结果。

【技术特征摘要】
1.一种数据查询方法,其特征在于,所述方法包括步骤:接收数据查询请求,其中,所述数据查询请求包含查询条件;判断所述查询条件中是否包含预设运算符;若为是,则按照预设的查询条件优化规则,将所述查询条件变换为至少两个不包含所述预设运算符的子查询条件;根据所述子查询条件,从预设表中查询数据,其中,所述预设表,用于存储数据;根据查询到的数据,生成数据查询结果。2.根据权利要求1所述的方法,其特征在于,所述按照预设的查询条件优化规则,将所述查询条件变换为至少两个不包含所述预设运算符的子查询条件,包括:将所述查询条件设置为目标查询条件;以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件;在变换得到的目标子查询条件中不包含预设运算符的情况下,将不包含预设运算符的目标子查询条件确定为所述查询条件的一个子查询条件;在变换得到的目标子查询条件中包含预设运算符的情况下,将包含预设运算符的目标子查询条件设置为目标查询条件,返回所述以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件的步骤。3.根据权利要求2所述的方法,其特征在于,所述以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件,包括:以所述目标查询条件中优先级最低运算符为基准,将所述目标查询条件变换为两个目标子查询条件,并获得目标子查询条件之间的运算关系;所述根据查询到的数据,生成数据查询结果,包括:根据所述目标子查询条件之间的运算关系,确定查询到的数据间的运算关系;根据查询到的数据和所确定的运算关系,生成数据查询结果。4.根据权利要求1所述的方法,其特征在于,所述根据所述子查询条件,从预设表中查询数据,包括:根据预设表的数据索引,从所述预设表中获得满足所述子查询条件的数据。5.根据权利要求1所述的方法,其特征在于,所述预设的查询条件优化规则包括:谓词下推、常量折叠、布尔函数简化中的一种或多种。6.一种数据查询装置,其特征在于,所述装置包括:请求接收模块、运算符判断模块、条件变换模块、数据查询模块和结果生成模块;其中,所述请求接收模块,用于接收数...

【专利技术属性】
技术研发人员:邓长春
申请(专利权)人:杭州海康威视数字技术股份有限公司
类型:发明
国别省市:浙江,33

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

1