CN115934760A - 数据库查询语句的优化方法、存储介质与计算机设备 - Google Patents

数据库查询语句的优化方法、存储介质与计算机设备 Download PDF

Info

Publication number
CN115934760A
CN115934760A CN202211714470.5A CN202211714470A CN115934760A CN 115934760 A CN115934760 A CN 115934760A CN 202211714470 A CN202211714470 A CN 202211714470A CN 115934760 A CN115934760 A CN 115934760A
Authority
CN
China
Prior art keywords
query statement
data
database query
column
condition
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.)
Pending
Application number
CN202211714470.5A
Other languages
English (en)
Inventor
刘进央
尹强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingbase Information Technologies Co Ltd
Original Assignee
Beijing Kingbase Information Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingbase Information Technologies Co Ltd filed Critical Beijing Kingbase Information Technologies Co Ltd
Priority to CN202211714470.5A priority Critical patent/CN115934760A/zh
Publication of CN115934760A publication Critical patent/CN115934760A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种数据库查询语句的优化方法、存储介质与计算机设备。其中上述方法包括:获取数据库查询语句,并确定数据库查询语句是否包含去除重复值的关键词DISTINCT;在数据库查询语句包含关键词DISTINCT的情况下,判断数据库查询语句指定的数据表是否全部满足预设的限定表规则;若是,删除数据库查询语句中的关键词DISTINCT,得到消除优化后的查询语句;按照消除优化后的查询语句执行查询。本发明的方案,保证删除DISTINCT的情况下,查询结果不会出现重复项,保证优化前后的一致性,节省了进行去重处理耗费的资源,提高了查询处理效率。

Description

数据库查询语句的优化方法、存储介质与计算机设备
技术领域
本发明涉及数据库技术,特别是涉及一种数据库查询语句的优化方法、存储介质与计算机设备。
背景技术
关系型数据库一般采用结构化查询语言(Structured Query Language,简称SQL)进行查询,对一个给定的查询语句,通常存在多种可能的策略,查询优化就是从中找出最有效的查询执行计划的处理过程。针对同一个查询语句,不同的执行计划的代价上可能存在非常大的区别。数据库系统的优化器的任务就是生成优选的查询执行。
查询结果中可能会出现重复值,在需要仅仅列出不重复的结果时,可以采用DISTINCT关键词,用于返回唯一不同的。对于形如select distinct…的SQL语句,优化器在处理时,无论是否存在重复元组,都会对结果进行去重操作。
在查询结果本身不具有重复值的情况下,上述处理DISTINCT关键词的方式会增加资源开销,导致查询效率下降。
发明内容
本发明的一个目的是要至少解决上述任一方面技术问题的数据库查询语句的优化方法、存储介质与计算机设备。
本发明一个进一步的目的是提高具有DISTINCT关键词的查询语句的查询效率。
本发明另一进一步的目的是优化消除关键词DISTINCT的规则。
特别地,本发明提供了一种数据库查询语句的优化方法,其包括:
获取数据库查询语句,并确定数据库查询语句是否包含去除重复值的关键词DISTINCT;
在数据库查询语句包含关键词DISTINCT的情况下,判断数据库查询语句指定的数据表是否全部满足预设的限定表规则;
若是,删除数据库查询语句中的关键词DISTINCT,得到消除优化后的查询语句;
按照消除优化后的查询语句执行查询。
可选地,判断查询语句指定的数据表是否全部满足预设的限定表规则的步骤包括:
确定数据表中数据库查询语句涉及数据列的集合;
对数据列的集合逐列判断是否同时满足非空性条件以及唯一性条件;
若满足,则判定查询语句指定的数据表属于限定表,并且认定限定表全部满足预设的限定表规则。
可选地,在对数据列的集合逐列判断是否同时满足非空性条件以及唯一性条件的步骤之后还包括:
将数据列不能同时满足非空性条件以及唯一性条件的数据表作为待分析表;
判断待分析表是否与任一限定表存在唯一连接关系;
若是,则认定待分析表也属于限定表。
可选地,判断待分析表是否与任一限定表存在唯一连接关系的步骤包括:
待分析表与限定表中满足非空性条件和唯一性条件的列集合中的一列存在连接谓词关系且满足待分析表的某一列数据与列集合中的一列数据具有等值关系。
可选地,非空性条件包括:
数据列上存在非空约束或者主键约束;或者
数据列上存在设置非空的谓词且之间使用逻辑连词and进行连接;或者
数据列经过过滤谓词或者连接谓词进行筛选并且之间使用逻辑连词and进行连接。
可选地,唯一性条件包括:
数据列上存在唯一约束或者主键约束;或者
数据列上存在唯一索引;
数据列与另一满足预设条件的数据列的组合具有唯一性,满足预设条件的数据列存在等于常数的谓词并且之间使用逻辑连词and进行连接。
可选地,唯一性条件还包括:
数据列为具有DISTINCT查询子句的视图或者子查询的全部列;或者
数据列为视图或者子查询中GROUP BY子句的唯一列。
可选地,判断数据库查询语句指定的数据表是否全部满足预设的限定表规则的步骤之后还包括:
如果数据库查询语句指定的数据表不能全部满足预设的限定表规则,则直接执行包含去除重复值的关键词DISTINCT的数据库查询语句。
根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库查询语句的优化方法。
根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据库查询语句的优化方法。
本发明的数据库查询语句的优化方法,对于包含关键词DISTINCT的数据库查询语句,其指定的数据表全部满足预设的限定表规则的规则下,直接去除数据库查询语句中的关键词DISTINCT,节省了进行去重处理耗费的资源,提高了查询处理效率。限定表规则通过对数据表的非空唯一特性进行设置,保证删除DISTINCT的情况下,查询结果不会出现重复项,保证优化前后的一致性。
进一步地,本发明的数据库查询语句的优化方法,针对非空性条件以及唯一性条件(特别是视图和子查询的非空性条件以及唯一性条件)分别进行了创造性的总结,确保查询结果不重复。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是根据本发明一个实施例的数据库查询语句的优化方法的示意图;
图2为优化前的数据库查询语句的代数形式示意图;
图3为使用根据本发明一个实施例的数据库查询语句的优化方法消除优化后的查询语句的代数形式;
图4是根据本发明一个实施例的数据库查询语句的优化方法的一种可选执行流程图;
图5是根据本发明一个实施例的机器可读存储介质的示意图;以及
图6是根据本发明一个实施例的计算机设备的示意图。
具体实施方式
图1是根据本发明一个实施例的数据库查询语句的优化方法的示意图,该数据库查询语句的优化方法一般性地可以包括:
步骤S101,获取数据库查询语句,并确定数据库查询语句是否包含去除重复值的关键词DISTINCT;
步骤S102,在数据库查询语句包含关键词DISTINCT的情况下,判断数据库查询语句指定的数据表是否全部满足预设的限定表规则。
限定表规则按照数据表中数据列的唯一性进行配置,也即根据确保查询结果不包含重复值的情况进行设置。判断数据库查询语句指定的数据表是否全部满足预设的限定表规则的一种可选方式为:确定数据表中数据库查询语句涉及数据列的集合;对数据列的集合逐列判断是否同时满足非空性条件以及唯一性条件;若满足,则判定查询语句指定的数据表属于限定表,并且认定限定表全部满足预设的限定表规则。
上述非空性条件可以包括以下任意一种:
非空性条件(1):数据列上存在非空约束(NOT NULL)或者主键约束(PRIMARY KEY约束)。
非空性条件(2):数据列上存在设置非空的谓词(IS NOT NULL谓词)且之间使用逻辑连词and进行连接。也即对于表T中的列集合s(s取值为c1,c2…cn,n>=1),非空性条件(2)为T.c1 is not null and T.c2 is not null and…and T.cn is not null。
非空性条件(3):数据列经过过滤谓词(例如大于某常数)或者连接谓词(连接条件)进行筛选并且之间使用逻辑连词and进行连接。也即对于表T中的列集合s(s取值为c1,c2…cn,n>=1),非空性条件(3)为T.c1>5and T.c2=R.yand…and T.cn<P.x。其中5为示意的常数值,R.y,P.x分别指R表的y列,P表的x列为示例条件,本领域技术人员可以在该示例的指示下,使用逻辑连词and进行连接的经过过滤谓词或者连接谓词进行筛选数据列满足非空性条件。
唯一性条件可以包括以下任意一种:
唯一性条件(1):数据列上存在唯一约束(Unique)或者主键约束(PRIMARY KEY约束)。
唯一性条件(2):数据列上存在唯一索引(Unique索引);
唯一性条件(3):数据列与另一满足预设条件的数据列的组合具有唯一性,满足预设条件的数据列存在等于常数的谓词并且之间使用逻辑连词and进行连接。例如对于表T中的列集合s(s取值为c1,c2…cn,n>=1),存在另一个列集合s1(x1,x2…xn,n>=1),(T.s,T.s1)具有唯一性,且s1中的每一列在查询中存在等于常数的谓词(=constant),且它们之间为and关系,示例为T.x1=5 and T.x2=10 and…and T.xn=20。上述5、10、20为示例的常数。
在数据表T为视图或者子查询的情况下,唯一性条件还可以包括:数据列为具有DISTINCT查询子句的视图或者子查询的全部列;或者数据列为视图或者子查询中GROUP BY子句的唯一列。也就是说唯一性条件还可以包括:唯一性条件(4)对于视图T,该视图的SELECT DISTINCT子句中,只有T.s这一个列集合;唯一性条件(5)对于子查询T,该子查询的SELECT DISTINCT子句中,只有T.s这一个列集合;唯一性条件(6)对于视图T,视图中存在目标列T.s,并且T.s是视图的GROUP BY子句中的唯一列;唯一性条件(7)对于子查询T,子查询中存在目标列T.s,并且T.s是子查询的GROUP BY子句中的唯一列。
另外对于数据列不能同时满足非空性条件以及唯一性条件的数据表,还可以进行进一步的规则判断,也就是说在对数据列的集合逐列判断是否同时满足非空性条件以及唯一性条件的步骤之后还可以包括:将数据列不能同时满足非空性条件以及唯一性条件的数据表作为待分析表;判断待分析表是否与任一限定表存在唯一连接关系;若是,则认定待分析表也属于限定表。其中判断待分析表是否与任一限定表存在唯一连接关系的过程可以为:待分析表与限定表中满足非空性条件和唯一性条件的列集合中的一列存在连接谓词关系且满足待分析表的某一列数据与列集合中的一列数据具有等值关系。
例如表Tx与表Ty的一个具有“一性的列集合s(c1,c2…cn,n>=1)存在连接谓词满足Tx.a=Ty.c1 and Tx.b=Ty.c2 and…and Tx.n=Ty.cn,那么称表Tx与表Ty之间存在唯一连接关系。需要额外说明的是“唯一连接”关系并不可逆,仅可以认定表Tx与表Ty之间存在“唯一连接”关系,反之则不一定成立。
总而言之,限定表Tx的一个认定条件为:Tx中存在一个具有“非空唯一”特性的列集合Tx.s,且在select distinct字句所有的列均在列集合Tx.s内。
步骤S103,如果数据库查询语句指定的数据表全部满足预设的限定表规则,删除数据库查询语句中的关键词DISTINCT,得到消除优化后的查询语句。
步骤S104,按照消除优化后的查询语句执行查询。如果数据库查询语句指定的数据表不能全部满足预设的限定表规则,则直接执行包含去除重复值的关键词DISTINCT的数据库查询语句,也即对于不符合消除DISTINCT条件的查询在按照DISTINCT的处理过程进行处理。
上述实施例的方法对于包含关键词DISTINCT的数据库查询语句,其指定的数据表全部满足预设的限定表规则的规则下,直接去除数据库查询语句中的关键词DISTINCT,节省了进行去重处理耗费的资源,提高了查询处理效率。
以下针对上述实施例的方法中使用的规则进一步解释如下:
形如select distinct…的SQL语句,当查询中所有涉及的表全部术语限定表的情况下,可确定SQL语句结果集中的元组都是不重复的,可以进行distinct的消除。
针对查询语句:select distinct a,b,c from t1。经过消除优化后的查询语句变更为:select a,b,c from t1。图2、图3分别为优化前的数据库查询语句的代数形式以及消除优化后的查询语句的代数形式。优化前的数据库查询语句处理过程包括:步骤S201,对表T进行选择σ(T);步骤S202,对表T进行投影Π(T),步骤S203,执行去重deduplication;消除优化后的查询语句处理过程包括:步骤S201,对表T进行选择σ(T);步骤S202,对表T进行投影Π(T),直接得到结果。从而取消了步骤S203的去重过程,节省了处理过程。
限定表Tx需要满足以下两个条件中的至少一个条件:
限定表条件(1):Tx中存在一个具有非空唯一特性的列集合Tx.s,且s中的所有列出现在select distinct字句中
限定表条件(2):存在另一个限定表Ty,且Ty和Tx之间存在唯一连接关系。
限定表条件(2)中出现的唯一连接是指:表Tx与表Ty的一个具有“一性的列集合s(c1,c2…cn,n>=1)存在连接谓词满足Tx.a=Ty.c1 and Tx.b=Ty.c2and…and Tx.n=Ty.cn,那么称表Tx与表Ty之间存在“唯一连接”关系。需要额外说明的是“唯一连接”关系并不可逆,仅可以认定表Tx与表Ty之间存在唯一连接关系,反之则不一定成立。
限定表条件(1)中出现的非空唯一特性要求表T的列集合s同时满足非空性条件和唯一性条件。
非空性条件可以包括:
非空性条件(1):数据列上存在非空约束(NOT NULL)或者主键约束(PRIMARY KEY约束)。
非空性条件(2):数据列上存在设置非空的谓词(IS NOT NULL谓词)且之间使用逻辑连词and进行连接。也即对于表T中的列集合s(s取值为c1,c2…cn,n>=1),非空性条件(2)为T.c1 is not null and T.c2 is not null and…and T.cn is not null。
非空性条件(3):数据列经过过滤谓词(例如大于某常数)或者连接谓词(连接条件)进行筛选并且之间使用逻辑连词and进行连接。也即对于表T中的列集合s(s取值为c1,c2…cn,n>=1),非空性条件(3)为T.c1>5and T.c2=R.yand…and T.cn<P.x。其中5为示意的常数值,R.y,P.x分别指R表的y列,P表的x列为示例条件,本领域技术人员可以在该示例的指示下,使用逻辑连词and进行连接的经过过滤谓词或者连接谓词进行筛选数据列满足非空性条件。
当满足上述非空性条件(1)、非空性条件(2)、非空性条件(3)中的任一项时,则认为具有唯一性。
唯一性条件可以包括:
唯一性条件(1):数据列上存在唯一约束(Unique)或者主键约束(PRIMARY KEY约束)。
唯一性条件(2):数据列上存在唯一索引(Unique索引);
唯一性条件(3):数据列与另一满足预设条件的数据列的组合具有唯一性,满足预设条件的数据列存在等于常数的谓词并且之间使用逻辑连词and进行连接。例如对于表T中的列集合s(s取值为c1,c2…cn,n>=1),存在另一个列集合s1(x1,x2…xn,n>=1),(T.s,T.s1)具有唯一性,且s1中的每一列在查询中存在等于常数的谓词(=constant),且它们之间为and关系,示例为T.x1=5 and T.x2=10 and…and T.xn=20。上述5、10、20为示例的常数。
唯一性条件(4)对于视图T,该视图的SELECT DISTINCT子句中,只有T.s这一个列集合;
唯一性条件(5)对于子查询T,该子查询的SELECT DISTINCT子句中,只有T.s这一个列集合;
唯一性条件(6)对于视图T,视图中存在目标列T.s,并且T.s是视图的GROUP BY子句中的唯一列;
唯一性条件(7)对于子查询T,子查询中存在目标列T.s,并且T.s是子查询的GROUPBY子句中的唯一列。
当满足上述唯一性条件(1)~(7)中的任一项时,则认为具有唯一性。
图4是根据本发明一个实施例的数据库查询语句的优化方法的一种可选执行流程图,其示出了使用上述条件的一种执行流程。该执行流程包括:
步骤S401,获取具有select distinct……形式的数据库查询语句query;
步骤S402,从select distinct……的语句中找出所有存在非空唯一列集合的表,加入第一表集合set1;
步骤S403,判断Set1是否为空;
步骤S404,Query中不属于Set1的其他表加入待分析表集合set2;
步骤S405,判断Set2是否为空,也即判断是否所有表均属于set1;
步骤S406,Set2中每个表Tx,如果存在Set1中的某一表Ty满足Ty与Tx存在唯一连接,则将Tx移动至set1中;
步骤S407,判断Set2中的表是否被移动;
步骤S408,在set1为空的情况下(也即不存在非空唯一性的列集合的情况下),或者在set2中的表未被移动的情况下(也即set2中未被清空的情况下),直接执行selectdistinct……形式的查询语句query。在set2为空,也即所有表均属于set1的情况下,执行移除distinct后的优化语句。
步骤S410,在在set2为空,也即所有表均属于set1的情况下,移除query中的distinct。
通过上述步骤可以实现对上述特性的判定,通过两个集合set1和set2实现了非空唯一的列集合以及具有唯一连接性的限定表的判断,从而准确地判断出移除query中的distinct的情况,执行流程简单高效。发明人对上述实施例的方法进行了实际测试,测试结果表明本方案后,在满足该条逻辑优化规则的场景下,性能得到了极大的提升。
一个实际的测试场景为:创建表zl:create table zl(id int primary key,nametext);也即创建具有主键约束的表zl,在该表zl插入100万行数据后,针对语句query:select distinct*from zl;由于存在主键约束,结果集本来就不存在重复元组,distinct消除前后的结果对比为:执行时间从优化前的643ms变为优化后的103ms。
另外,对其他具有上述其他判断条件的表,经过实际测试优化前后执行时间也有大幅缩短。
本实施例还提供了一种机器可读存储介质和计算机设备。图5是根据本发明一个实施例的机器可读存储介质50的示意图,图6是根据本发明一个实施例的计算机设备60的示意图。
机器可读存储介质50其上存储有机器可执行程序51,机器可执行程序51被处理器执行时实现上述任一实施例的数据库查询语句的优化方法。
计算机设备60可以包括存储器620、处理器610及存储在存储器620上并在处理器610上运行的机器可执行程序51,并且处理器610执行机器可执行程序51时实现上述任一实施例的数据库查询语句的优化方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本实施例的描述而言,机器可读存储介质50可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质50甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
计算机设备60可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备60可以是云计算节点。计算机设备60可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备60可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
计算机设备60可以包括适于执行存储的指令的处理器610、在操作期间为所述指令的操作提供临时存储空间的存储器620。处理器610可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器620可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。
处理器610可以通过系统互连(例如PCI、PCI-Express等)连接到适于将计算机设备60连接到一个或多个I/O设备(输入/输出设备)的I/O接口(输入/输出接口)。I/O设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。I/O设备可以是计算机设备60的内置组件,或者可以是外部连接到计算设备的设备。
处理器610也可以通过系统互连链接到适于将计算机设备60连接到显示设备的显示接口。显示设备可以包括作为计算机设备60的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备60的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备60连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN)、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。
本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

Claims (10)

1.一种数据库查询语句的优化方法,包括:
获取所述数据库查询语句,并确定所述数据库查询语句是否包含去除重复值的关键词DISTINCT;
在所述数据库查询语句包含关键词DISTINCT的情况下,判断所述数据库查询语句指定的数据表是否全部满足预设的限定表规则;
若是,删除所述数据库查询语句中的关键词DISTINCT,得到消除优化后的查询语句;
按照所述消除优化后的查询语句执行查询。
2.根据权利要求1所述的数据库查询语句的优化方法,其中,所述判断所述查询语句指定的数据表是否全部满足预设的限定表规则的步骤包括:
确定所述数据表中所述数据库查询语句涉及数据列的集合;
对所述数据列的集合逐列判断是否同时满足非空性条件以及唯一性条件;
若满足,则判定所述查询语句指定的数据表属于限定表,并且认定所述限定表全部满足预设的限定表规则。
3.根据权利要求2所述的数据库查询语句的优化方法,其中,
在所述对所述数据列的集合逐列判断是否同时满足非空性条件以及唯一性条件的步骤之后还包括:
将数据列不能同时满足非空性条件以及唯一性条件的数据表作为待分析表;
判断所述待分析表是否与任一所述限定表存在唯一连接关系;
若是,则认定所述待分析表也属于所述限定表。
4.根据权利要求3所述的数据库查询语句的优化方法,其中,所述判断所述待分析表是否与任一所述限定表存在唯一连接关系的步骤包括:
所述待分析表与所述限定表中满足非空性条件和唯一性条件的列集合中的一列存在连接谓词关系且满足所述待分析表的某一列数据与所述列集合中的一列数据具有等值关系。
5.根据权利要求2所述的数据库查询语句的优化方法,其中,所述非空性条件包括:
所述数据列上存在非空约束或者主键约束;或者
所述数据列上存在设置非空的谓词且之间使用逻辑连词and进行连接;或者
所述数据列经过过滤谓词或者连接谓词进行筛选并且之间使用逻辑连词and进行连接。
6.根据权利要求2所述的数据库查询语句的优化方法,其中,所述唯一性条件包括:
所述数据列上存在唯一约束或者主键约束;或者
所述数据列上存在唯一索引;
所述数据列与另一满足预设条件的数据列的组合具有唯一性,所述满足预设条件的数据列存在等于常数的谓词并且之间使用逻辑连词and进行连接。
7.根据权利要求2所述的数据库查询语句的优化方法,其中,所述唯一性条件还包括:
所述数据列为具有DISTINCT查询子句的视图或者子查询的全部列;或者
所述数据列为视图或者子查询中GROUP BY子句的唯一列。
8.根据权利要求1所述的数据库查询语句的优化方法,其中,所述判断所述数据库查询语句指定的数据表是否全部满足预设的限定表规则的步骤之后还包括:
如果所述数据库查询语句指定的数据表不能全部满足预设的限定表规则,则直接执行包含去除重复值的关键词DISTINCT的所述数据库查询语句。
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据库查询语句的优化方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据库查询语句的优化方法。
CN202211714470.5A 2022-12-29 2022-12-29 数据库查询语句的优化方法、存储介质与计算机设备 Pending CN115934760A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211714470.5A CN115934760A (zh) 2022-12-29 2022-12-29 数据库查询语句的优化方法、存储介质与计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211714470.5A CN115934760A (zh) 2022-12-29 2022-12-29 数据库查询语句的优化方法、存储介质与计算机设备

Publications (1)

Publication Number Publication Date
CN115934760A true CN115934760A (zh) 2023-04-07

Family

ID=86555812

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211714470.5A Pending CN115934760A (zh) 2022-12-29 2022-12-29 数据库查询语句的优化方法、存储介质与计算机设备

Country Status (1)

Country Link
CN (1) CN115934760A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235118A (zh) * 2023-10-19 2023-12-15 北京人大金仓信息技术股份有限公司 一种查询优化方法、存储介质与计算机设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235118A (zh) * 2023-10-19 2023-12-15 北京人大金仓信息技术股份有限公司 一种查询优化方法、存储介质与计算机设备
CN117235118B (zh) * 2023-10-19 2024-01-26 北京人大金仓信息技术股份有限公司 一种查询优化方法、存储介质与计算机设备

Similar Documents

Publication Publication Date Title
US8099725B2 (en) Method and apparatus for generating code for an extract, transform, and load (ETL) data flow
US10133776B2 (en) Transforming a query by eliminating a subquery
US8868484B2 (en) Efficiently updating rows in a data warehouse
EP2605158A1 (en) Mixed join of row and column database tables in native orientation
CN105335403A (zh) 数据库访问方法及装置、数据库系统
CN110399395B (zh) 基于预计算的加速查询方法、存储介质
CN104036007A (zh) 一种分布式数据库查询方法及装置
CN112579610A (zh) 多数据源结构分析方法、系统、终端设备及存储介质
CN110399368B (zh) 一种定制数据表的方法、数据操作方法及装置
CN104714974A (zh) 一种查询语句解析与再处理的方法和装置
CN115934760A (zh) 数据库查询语句的优化方法、存储介质与计算机设备
CN112732752A (zh) 一种查询语句优化方法、装置、设备和存储介质
CN114090695A (zh) 分布式数据库的查询优化的方法和装置
US8015178B2 (en) System and method to determine a single SQL BOM solve
CN116610697A (zh) 数据库查询语句的查询方法、存储介质及设备
CN117076491A (zh) 一种数据处理方法、存储介质与设备
CN116467310A (zh) 无效索引的无锁标记方法、存储介质和计算机设备
CN115391346A (zh) 数据库聚合索引的生成方法、存储介质与计算机设备
CN115048409A (zh) 数据库连接操作的执行方法、存储介质与计算机设备
CN115391424A (zh) 数据库查询的处理方法、存储介质与计算机设备
CN115617773A (zh) 数据迁移的方法、装置和系统
CN117235118B (zh) 一种查询优化方法、存储介质与计算机设备
CN116595045A (zh) 数据库的查询优化方法、存储介质与计算机设备
CN116680299B (zh) 数据库查询方法、系统、存储介质以及设备
CN117149821B (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