CN103646067A - 一种提高数据库查询效率的方法和系统 - Google Patents
一种提高数据库查询效率的方法和系统 Download PDFInfo
- Publication number
- CN103646067A CN103646067A CN201310647102.8A CN201310647102A CN103646067A CN 103646067 A CN103646067 A CN 103646067A CN 201310647102 A CN201310647102 A CN 201310647102A CN 103646067 A CN103646067 A CN 103646067A
- Authority
- CN
- China
- Prior art keywords
- condition
- atom
- entry
- subset
- entries
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库查询技术领域,本发明公开了一种提高数据库查询效率的方法,其具体包括以下的步骤:步骤一、提取出查询语句,将查询语句采用条件集进行描述,条件集G={g1,g2,g3,…,gn},gi为条件项(i=1,2,3,…,n),每个gi由原子条件tij(j=1,2,3,…,m)组成;步骤二、遍历G的全部条件项,将每个条件项下的原子条件与其他原子条件逐一进行比较,当某个条件项下两个原子条件之间有逻辑上的相互包含关系时,则将范围较大(即外延较小)的原子条件舍去,得到新的条件集,并采用新的条件集进行数据库的查询。通过优化每个条件项下的原子条件,将原子条件之间的逻辑关系进行优化,减少从数据库中提取数据的操作,从而提高数据库的查询效率。
Description
技术领域
本发明属于数据库查询技术领域,尤其涉及一种提高数据库查询效率的方法和系统。
背景技术
目前主流数据库中提高查询效率的方法基本上都是基于某种具体的关系型数据库RDBMS系统进行的,并且都在某种程度上运用了某种具体的关系型数据库的特性进行处理。这种现状导致对通用的关系型数据库RDBMS系统缺乏统一和高效的查询方法。在局部应用和小规模应用时,查询效率低的问题还不突出,但一旦涉及到用户分布式应用,甚至迁移和移植数据库,原有的提高查询效率的方法将完全失效。
目前在数据库查询效率提升方面,都是各个厂商或者某个特定的关系数据库进行特定的查询效率优化,常见的有索引优化,存储空间的优化,数据页的链接,特定的主键设计等等。但是需要特定数据库提供不同的功能支持和函数接口,并且在这个层面不同的关系型数据库提供的数据操作语言DML、数据定义语言DDL在语法和词法上相差甚远,根本无法达到统一和通用。
发明内容
本发明的目的是针对现有技术中没有一种有效、通用的方法来提高数据库查询效率的技术问题,本发明公开了一种提高数据库查询效率的方法。本发明还公开了提高数据库查询效率方法的实现系统。
本发明的目的通过下述技术方案来实现:
一种提高数据库查询效率的方法,其具体包括以下的步骤:步骤一、提取出查询语句,将查询语句采用条件集进行描述,其中条件集G={g1,g2,g3,…,gn},gi为条件项(i=1,2,3,…,n),每个gi由原子条件tij(j=1,2,3,…,m)组成;条件项为只含有原子条件tij和“与”运算符的逻辑表达式;原子条件为不含“与”且不含“或”运算符的逻辑表达式;步骤二、遍历G的全部条件项,将每个条件项下的原子条件与其他原子条件逐一进行比较,当某个条件项下两个原子条件之间有逻辑上的相互包含关系时,则将范围较大外延较小的原子条件舍去,得到新的条件集,并采用新的条件集进行数据库的查询。
更进一步地,上述方法还包括:当其中一个条件项是一个原子条件时,将这个原子条件与其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G的另外的子集,从而形成新的条件集。
更进一步地,上述方法还包括:当其中一个条件项包括两个或者两个以上的原子条件时,依次取出每一个原子条件,将取出的原子条件与其他其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个取出的原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G另外的子集,从而形成新的条件集。
本发明还公开了一种提高数据库查询效率方法的实现系统,其具体包括语查询语句提取模块和查询语句优化模块,所述查询语句提取模块用于提取出查询语句,将查询语句采用条件集进行描述,其中条件集G={g1,g2,g3,…,gn},gi为条件项(i=1,2,3,…,n),每个gi由原子条件tij(j=1,2,3,…,m)组成;条件项为只含有原子条件tij和“与”运算符的逻辑表达式;原子条件为不含“与”且不含“或”运算符的逻辑表达式;所述查询语句优化模块用于遍历G的全部条件项,将每个条件项下的原子条件与其他原子条件逐一进行比较,当某个条件项下两个原子条件之间有逻辑上的相互包含关系时,则将范围较大外延较小的原子条件舍去,得到新的条件集,并采用新的条件集进行数据库的查询。
更进一步地,上述系统还还包括公共原子条件提取模块,所述公共原子条件提取模块用于当其中一个条件项是一个原子条件时,将这个原子条件与其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G的另外的子集,从而形成新的条件集。
更进一步地,上述公共原子条件提取模块还用于当其中一个条件项包括两个或者两个以上的原子条件时,依次取出每一个原子条件,将取出的原子条件与其他其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个取出的原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G另外的子集,从而形成新的条件集。
通过采用以上技术方案,本发明具有以下有益效果:通过优化查询条件,将条件项下的原子条件之间的逻辑关系进行优化,将条件项之间的逻辑关系进行优化,减少从数据库中提取数据的操作,从而提高数据库的查询效率。
附图说明
图1为本发明的提高数据库查询效率的方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合说明书附图及具体实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示的本发明的提高数据库查询效率的方法的流程图。
其中查询条件的文法定义如下:
条 件 集 G:<g>|<gi>or <gj>;
条件项g:<ti1>and<tik>;
原子条件t:ti1,ti2,ti3…tim。
其查询语句的优化过程如下:
a.将各条件项g中的原子条件进行比较,若各条件项的原子条件中有相互包含关系,则将外延小的原子条件t舍去;初始量m=1(1<m<p,p为条件项数)。
b.若m=p,遍历G的全部条件项,即得到优化结果。
c.若项gm是一个原子条件tm1,则将tm1与各条件项gi(i≠m)的tij比较,若存在gk,其中包含tkj与tm1相同,则将这部分gk与gm构成G的一个子集G*,剩余元素构成子集C*,将G*的公共项提取出来,得到新的集合记作G**;转至(b),继续处理G**;
d.若项gm为两个或者两个以上的原子条件tmj和tmk(k≠j)的and运算,则取第一个原子条件tmj,做(c)的处理,若G**为非空集合,转至(b),继续处理G**;若G**为空集合,取下一个原子条件,做(c)处理,直到G**非空;重复上述的(b)--(d),直到取遍G的全部条件项,所得新的G**与提取的序列即为优化后的查询条件。
本发明公开了一种提高数据库查询效率的方法,其具体包括以下的步骤:步骤一、提取出查询语句,将查询语句采用条件集进行描述,其中条件集G={g1,g2,g3,…,gn},gi为条件项(i=1,2,3,…,n),每个gi由原子条件tij(j=1,2,3,…,m)组成;条件项为只含有原子条件tij和“与”运算符的逻辑表达式;原子条件为不含“与”且不含“或”运算符的逻辑表达式;步骤二、遍历G的全部条件项,将每个条件项下的原子条件与其他原子条件逐一进行比较,当某个条件项下两个原子条件之间有逻辑上的相互包含关系时,则将范围较大(即外延较小)的原子条件舍去,得到新的条件集,并采用新的条件集进行数据库的查询;比如其中一个条件项下的两个原子条件分别为id>5、id>7,这两个原子条件之间就有逻辑上的相互包含关系,id>7的必然id>5,而id>5相对于id>7的范围更大,即外延相对较小,而每个条件项下两个原子条件之间都是“与”运算,此时,可以直接将id>5这个范围大、外延小的原子条件舍去,只剩下id>7的这一个原子条件。通过优化每个条件项下的原子条件,将原子条件之间的逻辑关系进行优化,减少从数据库中提取数据的操作,从而提高数据库的查询效率。
更进一步地,上述方法还包括:当其中一个条件项是一个原子条件时,将这个原子条件与其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G的另外的子集,从而形成新的条件集。若条件项gm是一个原子条件tm1,则:将tm1与各个条件项gi(i≠m)的tij进行比较,若存在gk,其中包含tkj,tkj与tm1相同,则将这个相同部分构成G的一个子集,剩余元素构成G的另外的子集,从而形成新的条件集,并通过新的条件集进行数据库查询。通过上述方法将条件项与条件项之间的逻辑关系进行优化,避免重复处理不同条件项下的同一个原子条件,进一步提高了数据库查询的效率。
更进一步地,上述方法还包括:当其中一个条件项包括两个或者两个以上的原子条件时,依次取出每一个原子条件,将取出的原子条件与其他其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个取出的原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G另外的子集,从而形成新的条件集。若条件项gm为两个或者两个以上的原子条件tmj和tmk(k≠j)的and运算,则取第一个原子条件tmj,将tmj与各个条件项gi(i≠m)的tij进行比较,若存在gk,其中包含tkj,tkj与tmj相同,则将这个相同部分构成G的一个子集,剩余元素构成G的另外一个子集。依次类推,直到完成所有条件项中原子条件的处理,得到新的条件集,并采用新的条件集进行查询,从而提高数据库的查询效率。
本发明还公开了一种提高数据库查询效率方法的实现系统,其具体包括语查询语句提取模块和查询语句优化模块,所述查询语句提取模块用于提取出查询语句,将查询语句采用条件集进行描述,其中条件集G={g1,g2,g3,…,gn},gi为条件项(i=1,2,3,…,n),每个gi由原子条件tij(j=1,2,3,…,m)组成;条件项为只含有原子条件tij和“与”运算符的逻辑表达式;原子条件为不含“与”且不含“或”运算符的逻辑表达式;所述查询语句优化模块用于遍历G的全部条件项,将每个条件项下的原子条件与其他原子条件逐一进行比较,当某个条件项下两个原子条件之间有逻辑上的相互包含关系时,则将范围较大(即外延较小)的原子条件舍去,得到新的条件集,并采用新的条件集进行数据库的查询;比如其中一个条件项下的两个原子条件分别为id>5、id>7,这两个原子条件之间就有逻辑上的相互包含关系,id>7的必然id>5,而id>5相对于id>7的范围更大,即外延相对较小,而每个条件项下两个原子条件之间都是“与”运算,此时,可以直接将id>5这个范围大、外延小的原子条件舍去,只剩下id>7的这一个原子条件。通过优化每个条件项下的原子条件,将原子条件之间的逻辑关系进行优化,减少从数据库中提取数据的操作,从而提高数据库的查询效率。
更进一步地,上述系统还还包括公共原子条件提取模块,所述公共原子条件提取模块用于当其中一个条件项是一个原子条件时,将这个原子条件与其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G的另外的子集,从而形成新的条件集。若条件项gm是一个原子条件tm1,则:将tm1与各个条件项gi(i≠m)的tij进行比较,若存在gk,其中包含tkj,tkj与tm1相同,则将这个相同部分构成G的一个子集,剩余元素构成G的另外的子集,从而形成新的条件集,并通过新的条件集进行数据库查询。通过上述方法将条件项与条件项之间的逻辑关系进行优化,避免重复处理不同条件项下的同一个原子条件,进一步提高了数据库查询的效率。
更进一步地,上述公共原子条件提取模块还用于当其中一个条件项包括两个或者两个以上的原子条件时,依次取出每一个原子条件,将取出的原子条件与其他其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个取出的原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G另外的子集,从而形成新的条件集。若条件项gm为两个或者两个以上的原子条件tmj和tmk(k≠j)的and运算,则取第一个原子条件tmj,将tmj与各个条件项gi(i≠m)的tij进行比较,若存在gk,其中包含tkj,tkj与tmj相同,则将这个相同部分构成G的一个子集,剩余元素构成G的另外一个子集。依次类推,直到完成所有条件项中原子条件的处理,得到新的条件集,并采用新的条件集进行查询,从而提高数据库的查询效率。
上述的实施例中所给出的系数和参数,是提供给本领域的技术人员来实现或使用本发明的,本发明并不限定仅取前述公开的数值,在不脱离本发明的发明思想的情况下,本领域的技术人员可以对上述实施例做出种种修改或调整,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。
Claims (6)
1.一种提高数据库查询效率的方法,其具体包括以下的步骤:步骤一、提取出查询语句,将查询语句采用条件集进行描述,其中条件集G={g1,g2,g3,…,gn},gi为条件项(i=1,2,3,…,n),每个gi由原子条件tij(j=1,2,3,…,m)组成;条件项为只含有原子条件tij和“与”运算符的逻辑表达式;原子条件为不含“与”且不含“或”运算符的逻辑表达式;步骤二、遍历G的全部条件项,将每个条件项下的原子条件与其他原子条件逐一进行比较,当某个条件项下两个原子条件之间有逻辑上的相互包含关系时,则将范围较大外延较小的原子条件舍去,得到新的条件集,并采用新的条件集进行数据库的查询。
2.如权利要求1所述的提高数据库查询效率的方法,其特征在于所述方法还包括:当其中一个条件项是一个原子条件时,将这个原子条件与其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G的另外的子集,从而形成新的条件集。
3.如权利要求1或者2所述的提高数据库查询效率的方法,其特征在于所述方法还包括:当其中一个条件项包括两个或者两个以上的原子条件时,依次取出每一个原子条件,将取出的原子条件与其他其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个取出的原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G另外的子集,从而形成新的条件集。
4.一种提高数据库查询效率方法的实现系统,其特征在于具体包括语查询语句提取模块和查询语句优化模块,所述查询语句提取模块用于提取出查询语句,将查询语句采用条件集进行描述,其中条件集G={g1,g2,g3,…,gn},gi为条件项(i=1,2,3,…,n),每个gi由原子条件tij(j=1,2,3,…,m)组成;条件项为只含有原子条件tij和“与”运算符的逻辑表达式;原子条件为不含“与”且不含“或”运算符的逻辑表达式;所述查询语句优化模块用于遍历G的全部条件项,将每个条件项下的原子条件与其他原子条件逐一进行比较,当某个条件项下两个原子条件之间有逻辑上的相互包含关系时,则将范围较大外延较小的原子条件舍去,得到新的条件集,并采用新的条件集进行数据库的查询。
5.如权利要求4所述提高数据库查询效率方法的实现系统,其特征在于所述系统还还包括公共原子条件提取模块,所述公共原子条件提取模块用于当其中一个条件项是一个原子条件时,将这个原子条件与其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G的另外的子集,从而形成新的条件集。
6.如权利要求5所述提高数据库查询效率方法的实现系统,其特征在于所述公共原子条件提取模块还用于当其中一个条件项包括两个或者两个以上的原子条件时,依次取出每一个原子条件,将取出的原子条件与其他其他条件项的原子条件进行比较,当其他条件项的某个原子条件与这个取出的原子条件相同时,将相同的原子条件构成条件集G的一个子集,其他的条件构成条件集G另外的子集,从而形成新的条件集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310647102.8A CN103646067A (zh) | 2013-12-06 | 2013-12-06 | 一种提高数据库查询效率的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310647102.8A CN103646067A (zh) | 2013-12-06 | 2013-12-06 | 一种提高数据库查询效率的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103646067A true CN103646067A (zh) | 2014-03-19 |
Family
ID=50251281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310647102.8A Pending CN103646067A (zh) | 2013-12-06 | 2013-12-06 | 一种提高数据库查询效率的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103646067A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480199A (zh) * | 2017-07-17 | 2017-12-15 | 深圳先进技术研究院 | 数据库的查询重构方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120130982A1 (en) * | 2010-11-19 | 2012-05-24 | International Business Machines Corporation | Optimizing database query |
CN103455573A (zh) * | 2013-08-21 | 2013-12-18 | 成都云鹰科技有限公司 | 一种基于逻辑优化的数据库查询优化方法 |
-
2013
- 2013-12-06 CN CN201310647102.8A patent/CN103646067A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120130982A1 (en) * | 2010-11-19 | 2012-05-24 | International Business Machines Corporation | Optimizing database query |
CN103455573A (zh) * | 2013-08-21 | 2013-12-18 | 成都云鹰科技有限公司 | 一种基于逻辑优化的数据库查询优化方法 |
Non-Patent Citations (1)
Title |
---|
滕皓 等: "一种关系数据库查询优化的方法", 《山东电子》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107480199A (zh) * | 2017-07-17 | 2017-12-15 | 深圳先进技术研究院 | 数据库的查询重构方法、装置、设备及存储介质 |
CN107480199B (zh) * | 2017-07-17 | 2020-06-12 | 深圳先进技术研究院 | 数据库的查询重构方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299102B (zh) | 一种基于Elastcisearch的HBase二级索引系统及方法 | |
CN103064875B (zh) | 一种服务化空间数据分布式查询方法 | |
CN102163195B (zh) | 一种基于分布式、异构数据库统一视图的查询优化方法 | |
Li et al. | Trajmesa: A distributed nosql storage engine for big trajectory data | |
US8762407B2 (en) | Concurrent OLAP-oriented database query processing method | |
CN105260403A (zh) | 通用跨数据库访问方法 | |
CN100481086C (zh) | 一种空间数据集群存储系统及其数据查询方法 | |
CN107291807A (zh) | 一种基于图遍历的sparql查询优化方法 | |
CN106919678A (zh) | 一种数据库查询优化系统及方法 | |
CN104123346A (zh) | 一种结构化数据搜索方法 | |
CN104462351B (zh) | 一种面向MapReduce范型的数据查询模型与方法 | |
CN104778277A (zh) | 一种基于Redis的RDF数据分布式存储和查询方法 | |
CN105955999A (zh) | 一种大规模RDF图的ThetaJoin查询处理方法 | |
CN103631972B (zh) | 一种列访问感知的数据缓存方法及系统 | |
CN104391923A (zh) | 一种查询数据集的方法及装置 | |
CN103049431A (zh) | 基于模型对象化语义的icd检验方法 | |
CN102214235A (zh) | 一种基于实时权限控制的企业管理软件搜索引擎集成方法 | |
CN103412869A (zh) | 服务器数据更新的批量推送方法 | |
CN103455573A (zh) | 一种基于逻辑优化的数据库查询优化方法 | |
CN103646067A (zh) | 一种提高数据库查询效率的方法和系统 | |
CN103049506B (zh) | 移动设备的数据缓存方法及其系统 | |
CN104809210A (zh) | 一种基于分布式计算框架下海量数据加权top-k查询方法 | |
CN102521318A (zh) | 基于xml的通用数据交换装置 | |
CN108984631A (zh) | 一种大数据的生成及调用方法和装置 | |
Xue et al. | Multiple sparse tables based on pivot table for multi-tenant data storage in SaaS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140319 |