CN116719843A - 数据库***的查询方法、存储介质及设备 - Google Patents
数据库***的查询方法、存储介质及设备 Download PDFInfo
- Publication number
- CN116719843A CN116719843A CN202310639992.1A CN202310639992A CN116719843A CN 116719843 A CN116719843 A CN 116719843A CN 202310639992 A CN202310639992 A CN 202310639992A CN 116719843 A CN116719843 A CN 116719843A
- Authority
- CN
- China
- Prior art keywords
- column
- query
- index
- detection
- indexes
- 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
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000001514 detection method Methods 0.000 claims abstract description 122
- 238000012545 processing Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据库***的查询方法、存储介质及设备。数据库***的查询方法包括获取查询语句,提取查询语句中的所有查询列;获取查询列中存在于多列索引的列组合;获取含有查询列个数最多的列组合,记为检测列组合;检测检测列组合对应的查询条件是否符合预设条件;若符合预设条件,根据数据库***的索引配置获取索引键值以检测列组合为起始的全部索引,记为检测索引集合,索引配置中存储有索引的索引类型以及对应的索引键值;检测并获取检测索引集合中索引键值的数量与检测列组合中查询列的个数相同的哈希多列索引;利用哈希多列索引创建查询路径。使得哈希多列索引只能够通过精确匹配获取到,提高了查询效率。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种数据库***的查询方法、存储介质及设备。
背景技术
在数据库的使用过程中,对数据库的数据进行查询是一种常见的数据库操作。在对数据库的数据进行查询的过程中,用户需要向数据库发送查询语句,数据库在接收到查询语句后,会对查询语句进行解析,然后进行优化,从而生成***认为最优的查询路径。
而对于查询语句的优化过程来说,可以通过配置索引的方式为数据库执行查询语句提供一种查询路径的生成方式。索引可以比作图书的目录,当表建立索引后,在进行查询时,可以通过索引快速定位到查询的内容,从而有助于加快查询速度。而目前优化器调用索引的方式存在进一步优化的空间。
发明内容
本发明的一个目的是要提供一种优化索引调用方式的数据库***的查询方法、存储介质及设备。
本发明一个进一步的目的是要提高索引的选取效率。
特别地,本发明提供了一种数据库***的查询方法,包括:
获取查询语句,提取所述查询语句中的所有查询列;
获取所有所述查询列中存在于多列索引的列组合;
获取所有列组合中含有查询列个数最多的所述列组合,记为检测列组合;
检测所述检测列组合对应的查询条件是否符合预设条件;
若符合所述预设条件,根据所述数据库***的索引配置获取索引键值以所述检测列组合为起始的全部索引,记为检测索引集合,所述索引配置中存储有索引的索引类型以及对应的索引键值;
检测并获取所述检测索引集合中索引键值的数量与所述检测列组合中查询列的个数相同的哈希多列索引;
若获取到哈希多列索引,利用所述哈希多列索引创建查询路径。
可选地,所述检测所述检测列组合对应的查询条件是否符合预设条件的步骤之后包括:
若不符合预设条件,判断是否存在其他列组合,若是,按照含有的查询列个数由多到少的顺序选取下一组列组合,记为所述检测列组合;
执行所述检测所述检测列组合对应的查询条件是否符合所述预设条件的步骤。
可选地,所述检测并获取所述检测索引集合中索引键值的数量与所述检测列组合中查询列的个数相同的哈希多列索引的步骤之后包括:
若未获取到哈希多列索引,检测所述检测索引集合中是否存在除哈希多列索引以外的其他多列索引,若存在,利用所述其他多列索引创建查询路径,若不存在,执行判断是否存在其他列组合的步骤。
可选地,所述判断是否存在其他列组合的步骤之后包括:
若否,检测是否存在适用于所述查询语句的单列索引,若检测到单列索引,利用所述单列索引创建查询路径。
可选地,所述检测是否存在适用于所述查询语句的单列索引的步骤之后包括:
若未检测到单列索引,按照预设的处理方式创建查询路径。
可选地,所述按照预设的处理方式创建查询路径的步骤包括:
按照全表扫描的方式创建查询路径。
可选地,所述利用所述哈希多列索引创建查询路径的步骤包括:
若获取到多个哈希多列索引,利用多个所述哈希多列索引创建多个查询路径。
可选地,所述检测所述列组合对应的查询条件是否符合预设条件的步骤包括:
检测所述检测列组合对应的查询条件是否均是等式,若是,所述列组合对应的查询条件符合预设条件。
根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现根据上述任一项的数据库***的查询方法。
根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现根据上述任一项的数据库***的查询方法。
本发明的数据库***的查询方法通过获取查询语句中的所有查询列,然后获取所有查询列中存在于多列索引的列组合,将其中含有查询列个数最多的列组合记为检测列组合。检测检测列组合对应的查询条件是否符合预设条件,若符合预设条件,根据数据库***的索引配置获取索引键值以检测列组合为起始的全部索引,记为检测索引集合,索引配置中存储有索引的索引类型以及对应的索引键值。检测并获取检测索引集合中索引键值的数量与检测列组合中查询列的个数相同的哈希多列索引。若获取到哈希多列索引,利用哈希多列索引创建查询路径。也就是说,能够根据查询语句中的列组合初步获取多列索引,然后根据多列索引的类型和索引键值数量确定是否存在适用的哈希多列索引。从而,使得哈希多列索引只能够通过精确匹配获取到,使得哈希多列索引能够准确适用,有效地避免了哈希多列索引找不到数据的情况发生,提高了查询效率。而且,因为根据查询语句中的列组合初步获取多列索引,所以在实现哈希多列索引精确匹配的基础上,仍然保持了对最左匹配适用的多列索引的选取。从而,在无哈希多列索引可用的情况下,能够使用其他多列索引创建查询路径,进而优化了查询过程中的索引调用方式,有利于保证查询效率。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是根据本发明一个实施例的数据库***的查询方法的示意性流程图;
图2是根据本发明另一个实施例的数据库***的查询方法的示意性流程图;
图3是根据本发明又一个实施例的数据库***的查询方法的示意性流程图;
图4是根据本发明又一个实施例的数据库***的查询方法的示意性流程图;
图5是根据本发明一个实施例的机器可读存储介质的示意图;
图6是根据本发明一个实施例的计算机设备的示意图。
具体实施方式
本领域技术人员应当理解的是,下文所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,该一部分实施例旨在用于解释本发明的技术原理,并非用于限制本发明的保护范围。基于本发明提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本发明的保护范围之内。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。
如图1所示,在一个实施例中,数据库***的查询方法一般性地包括:
步骤S101,获取查询语句,提取查询语句中的所有查询列。具体地,对于一个查询语句来说,会包括查询条件字段,查询条件中会包括要查询的列的列名和赋值。提取查询语句中的所有查询列即提取所有涉及到的列名。
举例来说,查询语句为“select id,age from tb where id=10and age=12”,表示从表名为tb的表中查找id=10并且age=12的数据。那么,对于此查询语句,要查询的列即id和age,赋值分别为“=10”和“=12”。所以,查询列即id和age。
步骤S102,获取所有查询列中存在于多列索引的列组合。具体地,多列索引即对两列或多于两列的数据列共同创建的索引。存在于多列索引的列组合即列组合中含有的查询列均包括在多列索引针对的数据列中。
示例性地,查询语句为“select id,age from tb where id=10and age=12”,如果存在针对id和age列的多列索引,那么上述查询语句中可以获取到列组合id和age,因为id和age均存在于多列索引中。
或者,如果存在针对id、age和name列的多列索引,那么上述查询语句中可以获取到列组合id和age,因为id和age均存在于多列索引中。如果查询语句是“select id,age,name from tb where id=10and age=12and name=A”,那么,列组合就存在id和age、age和name以及id、age和name。
步骤S103,获取所有列组合中查询列个数最多的列组合,记为检测列组合。具体地,也就是从所有列组合中找到含有查询列个数最多的列组合,记为检测列组合。
示例性地,查询语句为“select id,age from tb where id=10and age=12”,如果存在针对id和age列的多列索引,那么上述查询语句中可以获取到列组合id和age,检测列组合即id和age,因为查询列最多只有两个。
或者,如果存在针对id、age和name列的多列索引,那么上述查询语句中可以获取到列组合id和age,而检测列组合即id和age,因为查询列最多只有两个。如果查询语句是“select id,age,name from tb where id=10and age=12and name=A”,那么,列组合就存在id和age、age和name以及id、age和name,检测列组合即id、age和name。
步骤S104,检测检测列组合对应的查询条件是否符合预设条件。具体地,检测检测列组合对应的查询条件是否均是等式,若是,检测列组合对应的查询条件符合预设条件。也就是说,检测列组合中查询列的赋值是否都是等式,如果都是等式,那么检测列组合的查询条件符合预设条件。
举例来说,查询语句为“select id,age from tb where id=10and age=12”,如果获取到检测列组合id和age,检测列组合id和age对应的查询条件均是等式(“=10”和“=12”),所以检测列组合符合预设条件。
步骤S105,若符合预设条件,根据数据库***的索引配置获取索引键值以检测列组合为起始的全部索引,记为检测索引集合。索引配置中存储有索引的索引类型以及对应的索引键值。具体地,对于索引来说,其包括索引类型和索引键值,在创建索引时,可以在创建语句中进行设置。对于数据库***创建的索引,均会记录在数据库***的索引配置中。其中,索引类型可以有哈希索引、B+树索引等等。索引键值即索引针对的列,例如,一个针对id列和age列的多列索引,其索引键值即id和age。
因为索引在创建时,索引键值的顺序也是索引的属性之一。所以,索引键值以检测列组合为起始的索引即索引键值最开始的索引键值与检测列组合相同的索引。
举例来说,查询语句为“select id,age from tb where id=10and age=12”,如果获取到检测列组合id和age,而且检测列组合符合预设条件。所以获取第一个索引键值为id和第二个索引键值为age的索引,至于后边还有无其他的索引键值,不去考虑。将获取到的所有索引记为检测索引集合。
步骤S106,检测并获取检测索引集合中索引键值的数量与检测列组合中查询列的个数相同的哈希多列索引。具体地,也就是检测检测索引集合中是否存在哈希多列索引,如果存在哈希多列索引,检测哈希多列索引的索引键值的数量与检测列组合是否相同,如果数量相同,则获取该哈希多列索引。
步骤S107,若获取到哈希多列索引,利用哈希多列索引创建查询路径。如果能获取到相应的哈希多列索引,则利用哈希多列索引创建查询路径。
虽然哈希索引相较于其他索引来说,查询速度更快,但是,因为哈希多列索引只能支持精确匹配,而现有的数据库***均采用的是最左匹配,导致哈希多列索引的使用存在困难。
具体来说,对于最左匹配原则,如果多列索引的索引键值为id和age,即使查询语句的查询条件只有“id=10”,仍然判定为可以使用多列索引。也就是说,最左匹配即从索引的最前键值开始,任何数量的连续索引均可以匹配。这就与哈希多列索引的精确匹配原则不同,因为哈希多列索引只有索引键值均出现且为等式才能使用。所以,哈希多列索引的使用存在困难。例如,如果哈希多列索引的索引键值为id和age,即使查询语句的查询条件只有“id=10”,因为现有为最左匹配原则,仍然判定为可以使用该哈希多列索引,但实际哈希多列索引不可用,这就会出现查询找不到数据的情况。
在本实施例的方案中,通过获取查询语句中的所有查询列,然后获取所有查询列中存在于多列索引的列组合,将其中含有查询列个数最多的列组合记为检测列组合。检测检测列组合对应的查询条件是否符合预设条件,若符合预设条件,根据数据库***的索引配置获取索引键值以检测列组合为起始的全部索引,记为检测索引集合,索引配置中存储有索引的索引类型以及对应的索引键值。检测并获取检测索引集合中索引键值的数量与检测列组合中查询列的个数相同的哈希多列索引。若获取到哈希多列索引,利用哈希多列索引创建查询路径。
也就是说,能够根据查询语句中的列组合初步获取多列索引,然后根据多列索引的类型和索引键值数量确定是否存在适用的哈希多列索引。从而,使得哈希多列索引只能够通过精确匹配获取到,使得哈希多列索引能够准确适用,有效地避免了哈希多列索引找不到数据的情况发生。而且,因为根据查询语句中的列组合初步获取多列索引,所以在实现哈希多列索引精确匹配的基础上,仍然保持了对最左匹配适用的多列索引的选取。从而,在无哈希多列索引可用的情况下,能够使用其他多列索引创建查询路径,进而优化了查询过程中的索引调用方式,有利于保证查询效率。
举例来说,如果索引配置中存在针对id和age的哈希多列索引、以及针对id和age的B+树多列索引。当查询语句为“select id,age from tb where id=10and age=12”,即从表名为tb的表中查找id=10并且age=12的数据。那么,对于此查询语句。首先,检测列组合为id列和age,且检测列组合符合预设条件。针对id和age的哈希多列索引、以及针对id和age的B+树多列索引均是以检测列组合为起始,所以获取这两个索引,记为检测索引集合。检测索引集合中存在索引键值数与检测列组合的查询列个数相同的哈希多列索引,即针对id和age的哈希多列索引,所以利用该哈希多列索引创建查询路径。
再举例来说,如果索引配置中存在针对id、age和name的哈希多列索引。当查询语句为“select id,age from tb where id=10and age=12”,即从表名为tb的表中查找id=10并且age=12的数据。那么,对于此查询语句。首先,检测列组合为id列和age,且检测列组合符合预设条件。针对id、age和name的哈希多列索引是以检测列组合为起始,所以获取这个索引,记为检测索引集合。因为针对id、age和name的哈希多列索引与检测列组合查询列数量不一致,所以判定无法使用。
如图2所示,在一种实施例中,数据库***的查询方法一般性地包括:
步骤S201,获取查询语句,提取查询语句中的所有查询列。
步骤S202,获取所有查询列中存在于多列索引的列组合。
步骤S203,获取所有列组合中查询列个数最多的列组合,记为检测列组合。
步骤S204,检测检测列组合对应的查询条件是否符合预设条件,若是,执行步骤S205,若否,执行步骤S208。具体地,检测检测列组合对应的查询条件是否均是等式,若是,检测列组合对应的查询条件符合预设条件。
步骤S205,根据数据库***的索引配置获取索引键值以检测列组合为起始的全部索引,记为检测索引集合。
步骤S206,检测并获取检测索引集合中索引键值的数量与检测列组合中查询列的个数相同的哈希多列索引。
步骤S207,若获取到哈希多列索引,利用哈希多列索引创建查询路径。
步骤S208,判断是否存在其他列组合,若是,执行步骤S209,若否,执行步骤S210。具体地,也就是判断是否还有没检测过的列组合。如果查询语句的查询列在三列以上,就可能存在多个列组合。例如,如果查询语句是“select id,age,name from tb where id=10and age=12and name=A”,那么,列组合就可能存在id和age、age和name以及id、age和name。
步骤S209,按照含有的查询列个数由多到少的顺序选取下一组列组合,记为检测列组合。也就是按照列组合含有的查询列的个数由多到少的顺序选取下一组列组合,记为检测列组合。执行步骤S204。
也就是说,在当前的检测列组合不符合预设条件的情况下,按照查询列个数有多到少的顺序,继续从列组合中选取列组合作为检测列组合进行检测。
步骤S210,检测是否存在适用于查询语句的单列索引,若是,执行步骤S211,若否,执行步骤S212。具体地,在查询语句所有的列组合均不符合预设条件的情况下,说明查询语句无可用的多列索引,那么检测查询语句是否有可用的单列索引,检测方式可以将查询语句的单个查询列看做是列组合,采用和列组合同样的检测方式。
步骤S211,利用单列索引创建查询路径。如果能够获取到合适的单列索引,那么用单列索引创建查询路径。
步骤S212,按照预设的处理方式创建查询路径。如果未获取到合适的单列索引,那么可以按照索引以外的方式创建查询路径。例如,按照全表扫描的方式创建查询路径,或者,利用视图查询的方式创建查询路径等等。
在本实施例的方案中,通过按照含有的查询列个数由多到少的顺序选取查询语句的列组合来进行检测。也就是说,在存在可以适用的哈希多列索引的情况下,能够优先对含有最多个查询语句的查询列的哈希多列索引进行选取调用,从而保证创建最优的查询路径。
举例来说,如果索引配置中存在针对id、age和score的哈希多列索引,以及id和age的哈希多列索引。当查询语句为“select id,age,score from tb where id=m andage=n and score=x”。那么,对于此查询语句,列组合包括id、age和score,以及id和age。
首先,检测列组合为id、age和score,且检测列组合查询条件均是等式,符合预设条件。针对id、age和score的哈希多列索引是以检测列组合为起始,所以获取这个索引,记为检测索引集合。因为针对id、age和score的哈希多列索引与检测列组合查询列数量一致,所以适用此哈希多列索引。id和age的列组合不再检测。
当查询语句为“select id,age,score from tb where id=m and age=n andscore>x”。那么,对于此查询语句,列组合包括id、age和score,以及id和age。首先,检测列组合为id、age和score,且检测列组合查询条件不均是等式,不符合预设条件。所以,选取id和age的列组合作为检测列组合,id和age的列组合均是等式,符合预设条件。针对id、age和score的哈希多列索引、针对id和age的哈希多列索引均是以检测列组合为起始,所以获取索引,记为检测索引集合。因为针对id、age和score的哈希多列索引与检测列组合查询列数量不一致,所以不选用。因为针对id和age的哈希多列索引与检测列组合查询列数量一致,所以适用此哈希多列索引。
如图3所示,在一个实施例中,数据库***的查询方法一般性地包括:
步骤S301,获取查询语句,提取查询语句中的所有查询列。
步骤S302,获取所有查询列中存在于多列索引的列组合。
步骤S303,获取所有列组合中查询列个数最多的列组合,记为检测列组合。
步骤S304,检测检测列组合对应的查询条件是否符合预设条件,若是,执行步骤S305,若否,执行步骤S310。具体地,检测检测列组合对应的查询条件是否均是等式,若是,检测列组合对应的查询条件符合预设条件。
步骤S305,根据数据库***的索引配置获取索引键值以检测列组合为起始的全部索引,记为检测索引集合。
步骤S306,检测并获取检测索引集合中索引键值的数量与检测列组合中查询列的个数相同的哈希多列索引。
步骤S307,若获取到哈希多列索引,利用哈希多列索引创建查询路径。
步骤S308,若未获取到哈希多列索引,检测检测索引集合中是否存在除哈希多列索引以外的其他多列索引,若是,执行步骤S309,利用其他多列索引创建查询路径,若否,执行步骤310。具体地,如果没有可用的哈希多列索引,检测检测索引集合中是否存在其他多列索引,例如B+树索引等等。
步骤S309,利用其他多列索引创建查询路径。因为哈希多列索引以外的多列索引无需保证索引键值数量与查询列数量相同,只要查询列与索引键值从前往后能匹配上即可。所以,在检测列组合符合预设条件的情况下,只要存在其他多列索引,那么一定可用。
步骤S310,判断是否存在其他列组合,若是,执行步骤S311,若否,执行步骤S312。具体地,也就是判断是否还有没检测过的列组合。
步骤S311,按照含有的查询列个数由多到少的顺序选取下一组列组合,记为检测列组合。执行步骤S304。
步骤S312,检测是否存在适用于查询语句的单列索引,若是,执行步骤S313,若否,执行步骤S314。
步骤S313,利用单列索引创建查询路径。如果能够获取到合适的单列索引,那么用单列索引创建查询路径。
步骤S314,按照预设的处理方式创建查询路径。如果未获取到合适的单列索引,那么可以按照索引以外的方式创建查询路径。例如,按照全表扫描的方式创建查询路径,或者,利用视图查询的方式创建查询路径等等。
如图4所示,在一个实施例中,数据库***的查询方法一般性地包括:在存在可用的哈希多列索引的情况下的执行流程如下:
步骤S401,获取查询语句,提取查询语句中的所有查询列。
步骤S402,获取检测列组合。检测列组合即所有查询列中存在于多列索引的列组合。
步骤S403,检测检测列组合对应的查询条件是否符合预设条件,若是,执行步骤S404,若否,执行步骤S405。具体地,检测检测列组合对应的查询条件是否均是等式,若是,检测列组合对应的查询条件符合预设条件。
步骤S404,根据数据库***的索引配置获取索引键值以检测列组合为起始的全部索引,记为检测索引集合。
步骤S405,检测索引集合中的索引是否为哈希多列索引,若是,执行步骤S406。也就是依次检测检测索引集合中的索引是否是哈希多列索引。
步骤S406,哈希多列索引的索引键值的数量是否与检测列组合的查询列个数一致,若是,执行步骤S407。
步骤S407,利用哈希多列索引创建查询路径。
具体地,在一个实施例中,利用哈希多列索引创建查询路径的步骤包括:若获取到多个哈希多列索引,利用多个哈希多列索引创建多个查询路径。再由优化器根据代价规则选取最优的查询路径。
本实施例还提供了一种机器可读存储介质和计算机设备。图5是根据本发明一个实施例的机器可读存储介质10的示意图。图6是根据本发明一个实施例的计算机设备20的示意图。
机器可读存储介质10其上存储有机器可执行程序11,机器可执行程序11被处理器执行时实现上述任一实施例的数据库***的查询方法。
计算机设备20可以包括存储器210、处理器220及存储在存储器210上并在处理器220上运行的机器可执行程序11,并且处理器220执行机器可执行程序11时实现上述任一实施例的数据库***的查询方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。
就本实施例的描述而言,机器可读存储介质10可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,机器可读存储介质10甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。
计算机设备20可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备20可以是云计算节点。计算机设备20可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备20可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
计算机设备20可以包括适于执行存储的指令的处理器220、在操作期间为所述指令的操作提供临时存储空间的存储器210。处理器220可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器210可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储***。
处理器220可以通过***互连(例如PCI、PCI-Express等)连接到适于将计算机设备20连接到一个或多个I/O设备(输入/输出设备)的I/O接口(输入/输出接口)。I/O设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。I/O设备可以是计算机设备20的内置组件,或者可以是外部连接到计算设备的设备。
处理器220也可以通过***互连链接到适于将计算机设备20连接到显示设备的显示接口。显示设备可以包括作为计算机设备20的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备20的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过***互连将计算机设备20连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机***接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。
本申请提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
Claims (10)
1.一种数据库***的查询方法,包括:
获取查询语句,提取所述查询语句中的所有查询列;
获取所有所述查询列中存在于多列索引的列组合;
获取所有列组合中含有查询列个数最多的所述列组合,记为检测列组合;
检测所述检测列组合对应的查询条件是否符合预设条件;
若符合所述预设条件,根据所述数据库***的索引配置获取索引键值以所述检测列组合为起始的全部索引,记为检测索引集合,所述索引配置中存储有索引的索引类型以及对应的索引键值;
检测并获取所述检测索引集合中索引键值的数量与所述检测列组合中查询列的个数相同的哈希多列索引;
若获取到哈希多列索引,利用所述哈希多列索引创建查询路径。
2.根据权利要求1所述的数据库***的查询方法,其中,所述检测所述检测列组合对应的查询条件是否符合预设条件的步骤之后包括:
若不符合预设条件,判断是否存在其他列组合,若是,按照含有的查询列个数由多到少的顺序选取下一组列组合,记为所述检测列组合;
执行所述检测所述检测列组合对应的查询条件是否符合所述预设条件的步骤。
3.根据权利要求2所述的数据库***的查询方法,其中,所述检测并获取所述检测索引集合中索引键值的数量与所述检测列组合中查询列的个数相同的哈希多列索引的步骤之后包括:
若未获取到哈希多列索引,检测所述检测索引集合中是否存在除哈希多列索引以外的其他多列索引,若存在,利用所述其他多列索引创建查询路径,若不存在,执行判断是否存在其他列组合的步骤。
4.根据权利要求2所述的数据库***的查询方法,其中,所述判断是否存在其他列组合的步骤之后包括:
若否,检测是否存在适用于所述查询语句的单列索引,若检测到单列索引,利用所述单列索引创建查询路径。
5.根据权利要求4所述的数据库***的查询方法,其中,所述检测是否存在适用于所述查询语句的单列索引的步骤之后包括:
若未检测到单列索引,按照预设的处理方式创建查询路径。
6.根据权利要求5所述的数据库***的查询方法,其中,所述按照预设的处理方式创建查询路径的步骤包括:
按照全表扫描的方式创建查询路径。
7.根据权利要求1所述的数据库***的查询方法,其中,所述利用所述哈希多列索引创建查询路径的步骤包括:
若获取到多个哈希多列索引,利用多个所述哈希多列索引创建多个查询路径。
8.根据权利要求1所述的数据库***的查询方法,其中,所述检测所述列组合对应的查询条件是否符合预设条件的步骤包括:
检测所述检测列组合对应的查询条件是否均是等式,若是,所述列组合对应的查询条件符合预设条件。
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据库***的查询方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据库***的查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310639992.1A CN116719843A (zh) | 2023-05-31 | 2023-05-31 | 数据库***的查询方法、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310639992.1A CN116719843A (zh) | 2023-05-31 | 2023-05-31 | 数据库***的查询方法、存储介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116719843A true CN116719843A (zh) | 2023-09-08 |
Family
ID=87867159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310639992.1A Pending CN116719843A (zh) | 2023-05-31 | 2023-05-31 | 数据库***的查询方法、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116719843A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093611A (zh) * | 2023-10-16 | 2023-11-21 | 北京人大金仓信息技术股份有限公司 | 数据库组合索引建议处理方法、存储介质和计算机设备 |
-
2023
- 2023-05-31 CN CN202310639992.1A patent/CN116719843A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093611A (zh) * | 2023-10-16 | 2023-11-21 | 北京人大金仓信息技术股份有限公司 | 数据库组合索引建议处理方法、存储介质和计算机设备 |
CN117093611B (zh) * | 2023-10-16 | 2024-03-19 | 北京人大金仓信息技术股份有限公司 | 数据库组合索引建议处理方法、存储介质和计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105653537A (zh) | 一种数据库应用***的分页查询方法和装置 | |
CN104468777A (zh) | 数据操作方法和装置 | |
CN111913954B (zh) | 智能数据标准目录生成方法和装置 | |
CN116719843A (zh) | 数据库***的查询方法、存储介质及设备 | |
CN116257552A (zh) | 数据库查询语句的优化方法、存储介质与设备 | |
CN116595044A (zh) | 数据库选择率计算的优化方法、存储介质与设备 | |
CN109543027A (zh) | 分页数据的获取方法及装置、设备及存储介质 | |
CN111651397B (zh) | 一种访问PXIe外设模块的方法和设备 | |
CN110874365B (zh) | 一种信息查询方法及其相关设备 | |
CN112256999A (zh) | 页面显示方法、装置、设备 | |
CN111724143A (zh) | 基于rpa的流程元素定位方法及装置、计算设备、存储介质 | |
CN111078671A (zh) | 数据表字段的修改方法、装置、设备和介质 | |
CN106202423A (zh) | 一种文件排序方法和设备 | |
CN107273293B (zh) | 大数据***性能测试方法、装置及电子设备 | |
CN114020769A (zh) | 一种数据血缘分析方法、装置和存储介质 | |
CN110297825B (zh) | 数据处理方法、装置、计算机设备以及存储介质 | |
CN110807037B (zh) | 一种数据修改方法、装置、电子设备及存储介质 | |
US10866993B2 (en) | Managing online help information in a data center | |
CN112836472A (zh) | 一种地址批注方法、装置、设备及存储介质 | |
CN110704523A (zh) | 数据导出方法、装置、设备及计算机可读存储介质 | |
CN109815426A (zh) | 页面信息检测方法及装置、终端和计算机可读存储介质 | |
CN117149821B (zh) | 一种查询优化方法、存储介质与计算机设备 | |
CN107958074B (zh) | 工程信息展示方法及装置 | |
CN117743382A (zh) | 数据库的结果集使用方法、介质与计算机设备 | |
JP2019109554A (ja) | 情報処理プログラム、情報処理装置及び情報処理方法 |
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 |