CN112835905B - 一种数组类型列的索引方法、装置、设备以及存储介质 - Google Patents
一种数组类型列的索引方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN112835905B CN112835905B CN202110164413.3A CN202110164413A CN112835905B CN 112835905 B CN112835905 B CN 112835905B CN 202110164413 A CN202110164413 A CN 202110164413A CN 112835905 B CN112835905 B CN 112835905B
- Authority
- CN
- China
- Prior art keywords
- index
- data
- target
- array type
- row
- 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
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/22—Indexing; Data structures therefor; Storage 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/24—Querying
- G06F16/242—Query formulation
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- 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)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (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
本发明公开了一种数组类型列的索引方法、装置、设备以及存储介质。所述方法包括:根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;确定目标数组类型列中的标量数据在索引辅助表中的第一行号;根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;其中,所述索引辅助表包括具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合。该方法通过利用索引辅助表使得对数组类型列的索引创建转变为对标量数据的索引创建,从而使得对数组类型列的索引检索转变为对数组类型列中标量数据的索引检索,能够有效提升查询效率。
Description
技术领域
本发明实施例涉及数组检索技术领域,尤其涉及一种数组类型列的索引方法、装置、设备以及存储介质。
背景技术
随着数据库技术的发展,在传统的关系型数据库中存储的数据种类也在不断的发生变化,从最初简单的标量类型发展到对象类型,再发展到数组类型等。在关系型数据库中,创建索引是有效提升检索效率的一种手段。
对于一个数组类型往往包含多个标量类型的值,因此如果要对数组类型的列创建索引,则无法像常规标量类型一样通过单值排序的方式创建。在实际应用中,对于数组类型列的数据检索通常不像常规的标量类型一样通过单值的比较进行检索,而是通过一个模糊的匹配查询进行检索,比如是否包含某些特定值等。因此,常规的索引检索方法也不能对数组类型的列进行有效处理。
因此,如何有效的对数组类型的列进行快速检索是当前亟待解决的技术问题。
发明内容
本发明实施例提供了一种数组类型列的索引方法、装置、设备以及存储介质,通过利用索引辅助表使得对数组类型列的索引创建转变为对标量数据的索引创建,从而使得对数组类型列的索引检索转变为对数组类型列中标量数据的索引检索,能够有效提升查询效率。
第一方面,本发明实施例提供了一种数组类型列的索引方法,包括:
根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;
确定目标数组类型列中的标量数据在索引辅助表中的第一行号;
根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;
其中,所述索引辅助表包括具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合。
第二方面,本发明实施例还提供了一种数组类型列的索引装置,包括:
获取模块,用于根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;
第一确定模块,用于确定目标数组类型列中的标量数据在索引辅助表中的第一行号;
第二确定模块,用于根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;
其中,所述索引辅助表包括具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合。
第三方面,本发明实施例还提供了一种计算机设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器用于实现本发明任意实施例中所述的数组类型列的索引方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所提供的数组类型列的索引方法。
本发明实施例提供了一种数组类型列的索引方法、装置、设备以及存储介质,首先根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;然后确定目标数组类型列中的标量数据在索引辅助表中的第一行号;最后根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;其中,所述索引辅助表包括具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合。上述技术方案通过利用索引辅助表使得对数组类型列的索引创建转变为对标量数据的索引创建,从而使得对数组类型列的索引检索转变为对数组类型列中标量数据的索引检索,能够有效提升查询效率。
附图说明
图1为本发明实施例一所提供的一种数组类型列的索引方法的流程示意图;
图2为本发明实施例二所提供的一种数组类型列的索引方法的流程示意图;
图3为本发明实施例三所提供的一种数组类型列的索引装置的结构示意图;
图4为本发明实施例四所提供的一种计算机设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
实施例一
图1为本发明实施例一所提供的一种数组类型列的索引方法的流程示意图,该方法可适用于对数组中的目标数据进行检索的情况,该方法可以由一种数组类型列的索引装置来执行,其中该装置可由软件和/或硬件实现,并一般集成在计算机设备上。
如图1所示,本发明实施例一提供的一种数组类型列的索引方法,包括如下步骤:
S110、根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列。
在本实施例中,索引请求可以为用户通过计算机发送的索引请求指令;目标where子句可以为在where子句的基础上改写后得到的。其中,where子句可以理解为初始检索语句,目标where子句可以理解为改写后的检索语句。示例性的,初始检索语句可以为SELECT*FROM TEST WHERE CONTAINS(C1,1,2,3),改写后的检索语句可以为SELECT*FROM TESTWHERE ROWID IN(SELECT ROW_ID FROM ARR$IDX WHERE ELE_VAL IN(1,2,3))。
示例性的,在接收到索引请求后可以在where子句中利用CONTAINS函数对数组类型列进行检索,例如需要检索数组类型列C1中包含标量数据a、b、c和d中任意一个或多个标量数据的行,则where子句可以为WHERE CONTAINS(C1,a,b,c,d)。根据在目标数组类型列上创建的数组索引自动将上述CONTAINS函数改写为IN子查询,改写后的where子句可以为WHERE ROWID IN(SELECT ROW_ID FROM ARR$IDX WHERE ELE_VAL IN(a,b,c,d))。改写后的where子句中可以包括目标数组类型列。
其中,数组类型列可以理解为一个数组类型的列,数组类型可以为具有任意数组类型的数组,示例性的,数组类型可以为整型数组或字符型数组。
进一步的,在根据索引请求获取对应的目标where子句之前,还包括在目标数组类型列上创建数组索引;
在本实施例中,在目标数组类型列上创建数组索引之前还需要创建一个数组类型和一个测试表。示例性的,创建一个INT型的数组的创建语句为:CREATE TYPE ARR_INT ISVARRAY(1024)OF INT;创建一个包含INT型数组的测试表的创建语句为:CREATE TABLETEST(C1 ARR_INT)。
进一步的,在需要创建索引的数组类型列即目标数组类型列上创建数组索引。
示例性的,目标数组类型列为C1列,则在测试表的C1列上创建数组索引IDX,创建数组索引语句可以为:CREATE ARRAY INDEX IDX ON TEST(C1)。
进一步的,所述在目标数组类型列上创建数组索引包括:获取目标数组类型列对应的标量类型以及创建索引辅助表。
示例性的,当执行数组索引创建语句时,自动执行以下步骤:
步骤1、获取目标数组类型列对应的标量类型。
其中,目标数组类型列为具有索引编号的数组类型列。示例性的,目标数组类型列对应的标量类型可以为INT型。
步骤2、创建索引辅助表。
具体的,创建索引辅助表包括:获取创建的数据字段,所述数据字段存储所述数组类型列包含的标量数据;获取创建的行号字段,所述行号字段存储在源表中所述标量数据所在行的行号;基于所述数据字段和所述行号字段创建索引辅助表。
其中,标量数据可以为目标数组类型列中的标量值,示例性的,若目标数组类型列C1中包含的数据为ARR_INT(a,b,c)和ARR_INT(d,e),则a,b,c,d,e即为标量数据;行号可以理解为该目标数组类型列中的标量数据在源表中的行对应的行号。其中,源表可以理解为数组类型集合,该数组类型集合没有创建索引实体,不具有索引编号,因此无法在源表中进行索引。
示例性的,创建一个索引辅助表可以记为ARR$IDX,ARR$IDX可以包含两个存储字段,其中一个存储字段可以存储目标数组类型列包含的标量数据,记为字段ELE_VAL;另一个存储字段存储所述目标数组类型列中的标量数据在源表中的行号,记为字段ROW_ID。
示例性的,创建一个索引辅助表的创建语句可以为:CREATE TABLE ARR$IDX(ELE_VAL INT,ROW_ID BIGINT,CLUSTER PRIMARY KEY(ELE_VAL,ROW_ID))。
进一步的,在所述数据字段中,将每行数组类型数据中重复的标量数据去除后,将不重复的标量数据存储到所述数组类型列中。
在本实施例中,数据字段ELE_VAL中的值对于目标数组类型列中同一个数组中的数据是去重的,即目标数组类型列中每行数组类型数据中的重复的标量数据只对应存储一次。由于源表中每行数组类型数据通常包含多个标量数据,因此一个行号可以对应多个标量数据;而索引辅助表中一个标量数据只对应一个行号。
S120、确定目标数组类型列中的标量数据在索引辅助表中的第一行号。
其中,第一行号可以为索引辅助表中的目标数组类型列中的标量数据所在行的行号。
具体的,根据索引辅助表中创建的数组索引IDX可以自动在索引辅助表中索引目标数组类型列中包含的标量数据,确定目标数组类型列中包含的标量数据在索引辅助表中的行号。
S130、根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果。
在本实施例中,第二行号可以为源表中的行号,目标数据可以为源表中第二行号对应行中的数据。
具体的,将在索引辅助表中确定的第一行号与源表中的所有行号进行匹配,将匹配成功的源表中的行号确定为第二行号,输出源表中第二行号对应行中的数据作为目标数据。
示例性的,在索引辅助表中的第一行号为1,则在源表中确定行号为1的行中包括的数据并输出。
可以理解的是,通过改写的where子句可以在索引辅助表内通过索引快速查找到包括目标数组类型列中包含的标量数据的第一行号,再通过第一行号对应确定源表中的第二行号,将第二行号对应行中的所有数据作为索引结果输出。
示例性的,若目标数组类型列中的标量数据为a,b,c,则在索引辅助表中查找出所有标量数据a,b,c对应的行号,即第一行号可以为a,b,c所在行的行号。
本发明实施例一提供的一种数组类型列的索引方法,首先根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;其次确定目标数组类型列中的标量数据在索引辅助表中的第一行号;最终根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;其中,所述索引辅助表包括具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合。该方法通过利用索引辅助表使得对数组类型列的索引创建转变为对标量数据的索引创建,从而使得对数组类型列的索引检索转变为对数组类型列中标量数据的索引检索,能够有效提升查询效率。
进一步的,在创建所述索引辅助表之后,还包括:获取在所述源表上创建的行后触发器,所述行后触发器包括三类触发动作,所述三类触发动作包括源表插入行动作、源表删除行动作以及源表更新行动作。
其中,可以在源表上创建行后触发器,用于维护源表和辅助表的数据变化关系。当在源表中添加一行数据、删除一行数据或更新一行数据时,可以通过行后触发器自动在索引辅助表中执行添加一行数据、删除一行数据或更新一行数据。
实施例二
图2为本发明实施例二所提供的一种数组类型列的索引方法的流程示意图,本实施例二在上述各实施例的基础上进行优化。在本实施例中,在根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果之后,还包括:当源表中插入N行数据后,通过所述行后触发器触发源表插入行动作,在所述辅助表中插入所述N行数据的数组类型列中包含的所有标量数据和所述标量数据所在行的行号;当源表中删除N行数据后,通过所述行后触发器触发源表删除行动作,在所述辅助表中根据所述N行数据的行号删除对应的行中的标量数据;当源表中更新N行数据后,通过所述行后触发器触发源表更新行动作,在所述辅助表中根据所述N行数据的行号删除对应的行中的标量数据,在所述辅助表中插入所述N行数据的数组类型列中包含的所有标量数据和所述标量数据所在行的行号。
如图2所示,本发明实施例二提供的一种数组类型列的索引方法,包括如下步骤:
S210、根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列。
S220、确定目标数组类型列中的标量数据在索引辅助表中的第一行号。
S230、根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果。
S240、当源表中插入N行数据后,通过所述行后触发器触发源表插入行动作,在所述辅助表中插入所述N行数据的数组类型列中包含的所有标量数据和所述标量数据所在行的行号。
在本实施例中,N可以为任意数值,当在源表中插入一行数据后,通过触发源表插入行动作可以自动在索引辅助表中插入该行数据的数组类型列中包含的所有标量数据和对应的行号。
示例性的,向源表中插入两行数据可以为:INSERT INTO TEST VALUES(ARR_INT(1,2,3));INSERT INTO TEST VALUES(ARR_INT(3,4,4,5))。插入数据后,数组ARR_INT(1,2,3)对应的行号可以为1,数组ARR_INT(3,4,4,5)对应的行号为2。行后触发器可以自动在索引辅助表ARR$IDX中插入数组ARR_INT(1,2,3)和数组ARR_INT(3,4,4,5)包含的所有标量数据以及对应的行号,由于数据字段ELE_VAL的值对于每行数组类型数据中重复的标量数据是去重的,因此标量数据值4只存储一次,执行完成后辅助表ARR$IDX中的数据如下所示:
S250、当源表中删除N行数据后,通过所述行后触发器触发源表删除行动作,在所述辅助表中根据所述N行数据的行号删除对应的行。
在本实施例中,当源表中删除一行数据后,可以通过源表删除行动作自动在辅助表中删除该行数据行号对应的行。
示例性的,删除源表中的一行数据为DELETE FROM TEST WHERE ROWID=2;删除该数据后,行后触发器可以自动删除索引辅助表中ROW_ID为2的行,执行完成后索引辅助表ARR$IDX中的数据如下所示:
S206、当源表中更新N行数据后,通过所述行后触发器触发源表更新行动作,在所述辅助表中根据所述N行数据的行号删除对应的行,在所述辅助列表中插入所述N行数据的数组类型列中包含的所有标量数据和所述标量数据所在行的行号。
在本实施例中,当在源表中更新一行数据后,首先可以通过行后触发器触发源表更新行动作,在索引辅助表中删除该行数据的行号对应的行,然后重新插入更新后该行数据的数组类型列包含的所有标量数据和对应的行号。
示例性的,更新源表中的一行数据:UPDATE TEST SET C1=ARR_INT(1,2,3,6,7)WHERE ROWID=1。更新数据后,行后触发器首先删除索引辅助表中ROW_ID为1的行,然后重新插入数组ARR_INT(1,2,3,6,7)包含的所有标量数据以及对应的行号,执行完成后索引辅助表ARR$IDX中的数据如下所示:
本发明实施例二提供的一种数组类型列的索引方法。利用该方法,不仅能够利用索引辅助表在源表中快速索引出目标数据,提高索引速度,还可以通过行后触发器对索引辅助表中的行进行删除、插入以及更新等操作,用于维护源表和索引辅助表的数据变化关系。
实施例三
图3为本发明实施例三所提供的一种数组类型列的索引装置的结构示意图,该装置可适用于对数组中的目标数据进行检索的情况,其中该装置可由软件和/或硬件实现,并一般集成在计算机设备上。
如图3所示,该装置包括:获取模块310、第一确定模块320以及第二确定模块330。
获取模块310,用于根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;
第一确定模块320,用于确定目标数组类型列中的标量数据在索引辅助表中的第一行号;
第二确定模块330,用于根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;
其中,所述索引辅助表为具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合。
在本实施例中,该装置首先通过获取模块根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;其次通过第一确定模块确定目标数组类型列中的标量数据在索引辅助表中的第一行号;最后通过第二确定模块根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果。
本实施例提供了一种数组类型列的索引装置,能够利用索引辅助表使得对数组类型列的索引创建转变为对标量数据的索引创建,从而使得对数组类型列的索引检索转变为对数组类型列中标量数据的索引检索,能够有效提升查询效率。
进一步的,还包括数组索引模块,数组索引模块用于:获取目标数组类型列对应的标量类型以及创建索引辅助表。
在上述优化的基础上,数组索引模块包括索引辅助表创建单元,索引辅助表创建单元用于获取创建的数据字段,所述数据字段存储所述目标数组类型列包含的标量数据;
获取创建的行号字段,所述行号字段存储在源表中所述标量数据所在行的行号;基于所述数据字段和所述行号字段创建索引辅助表。
进一步的,在所述数据字段中,将每行数组类型数据中重复的标量数据去除后,将不重复的标量数据存储到所述数组类型列中。
进一步的,还包括行后触发器获取模块,触发器获取模块用于获取在所述源表上创建的行后触发器,所述行后触发器包括三类触发动作,所述三类触发动作包括源表插入行动作、源表删除行动作以及源表更新行动作。
进一步的,当源表中插入N行数据后,通过所述行后触发器触发源表插入行动作,在所述辅助表中插入所述N行数据的数组类型列中包含的所有标量数据和所述标量数据所在行的行号。
进一步的,当源表中删除N行数据后,通过所述行后触发器触发源表删除行动作,在所述辅助表中根据所述N行数据的行号删除对应的行。
进一步的,当源表中更新N行数据后,通过所述行后触发器触发源表更新行动作,在所述辅助表中根据所述N行数据的行号删除对应的行,在所述辅助列表中插入所述N行数据的数组类型列中包含的所有标量数据和所述标量数据所在行的行号。
上述数组类型列的索引装置可执行本发明任意实施例所提供的数组类型列的索引方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4为本发明实施例四所提供的一种计算机设备的结构示意图。如图4所示,本发明实施例四提供的计算机设备包括:一个或多个处理器41和存储装置42;该计算机设备中的处理器41可以是一个或多个,图4中以一个处理器41为例;存储装置42用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器41执行,使得所述一个或多个处理器41实现如本发明实施例中任一项所述的数组类型列的索引方法。
所述计算机设备还可以包括:输入装置43和输出装置44。
计算机设备中的处理器41、存储装置42、输入装置43和输出装置44可以通过总线或其他方式连接,图4中以通过总线连接为例。
该计算机设备中的存储装置42作为一种计算机可读存储介质,可用于存储一个或多个程序,所述程序可以是软件程序、计算机可执行程序以及模块,如本发明实施例一或二所提供数组类型列的索引方法对应的程序指令/模块(例如,附图3所示的数组类型列的索引装置中的模块,包括:获取模块310、第一确定模块320以及第二确定模块330)。处理器41通过运行存储在存储装置42中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例中的数组类型列的索引方法。
存储装置42可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储装置42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置42可进一步包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置43可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置44可包括显示屏等显示设备。
并且,当上述计算机设备所包括一个或者多个程序被所述一个或者多个处理器41执行时,程序进行如下操作:
根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;
确定目标数组类型列中的标量数据在索引辅助表中的第一行号;
根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;
其中,所述索引辅助表包括具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合。
实施例五
本发明实施例五提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行数组类型列的索引方法,该方法包括:
根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;
确定目标数组类型列中的标量数据在索引辅助表中的第一行号;
根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;
其中,所述索引辅助表包括具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合。
可选的,该程序被处理器执行时还可以用于执行本发明任意实施例所提供的一种数组类型列的索引方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、闪存、光纤、便携式CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、无线电频率(Radio Frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种数组类型列的索引方法,其特征在于,包括:
根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;
确定目标数组类型列中的标量数据在索引辅助表中的第一行号;
根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;
其中,所述索引辅助表包括具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合;
所述根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果,包括:
将在所述索引辅助表中确定的所述第一行号与所述源表中的所有行号进行匹配,将匹配成功的所述源表中的所述行号确定为所述第二行号,输出所述源表中所述第二行号对应行中的数据作为所述目标数据,并将所述目标数据作为所述索引结果;
在所述根据索引请求获取对应的目标where子句之前,还包括在所述目标数组类型列上创建数组索引;
所述在所述目标数组类型列上创建数组索引包括:
获取所述目标数组类型列对应的标量类型以及创建所述索引辅助表;
其中,所述创建所述索引辅助表包括:
获取创建的数据字段,所述数据字段存储所述目标数组类型列包含的标量数据;
获取创建的行号字段,所述行号字段存储在所述源表中所述标量数据所在行的行号;
基于所述数据字段和所述行号字段创建所述索引辅助表。
2.根据权利要求1所述的方法,其特征在于,在所述数据字段中,将每行数组类型数据中重复的标量数据去除后,将不重复的标量数据存储到所述数组类型列中。
3.根据权利要求1所述的方法,其特征在于,在所述创建索引辅助表之后,还包括:
获取在所述源表上创建的行后触发器,所述行后触发器包括三类触发动作,所述三类触发动作包括源表插入行动作、源表删除行动作以及源表更新行动作。
4.根据权利要求3所述的方法,其特征在于,在所述根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果之后,还包括:
当源表中插入N行数据后,通过所述行后触发器触发源表插入行动作,在所述辅助表中插入所述N行数据的数组类型列中包含的所有标量数据和所述标量数据所在行的行号。
5.根据权利要求3所述的方法,其特征在于,在所述根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果之后,还包括:
当源表中删除N行数据后,通过所述行后触发器触发源表删除行动作,在所述辅助表中根据所述N行数据的行号删除对应的行。
6.根据权利要求3所述的方法,其特征在于,在所述根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果之后,还包括:
当源表中更新N行数据后,通过所述行后触发器触发源表更新行动作,在所述辅助表中根据所述N行数据的行号删除对应的行;
在所述辅助表中插入所述N行数据的数组类型列中包含的所有标量数据和所述标量数据所在行的行号。
7.一种数组类型列的索引装置,其特征在于,包括:
获取模块,用于根据索引请求获取对应的目标where子句,所述目标where子句包括目标数组类型列;
第一确定模块,用于确定目标数组类型列中的标量数据在索引辅助表中的第一行号;
第二确定模块,用于根据所述第一行号确定源表中对应的第二行号的目标数据,所述目标数据作为所述目标数组类型列的索引结果;
其中,所述索引辅助表为具有索引编号的数组类型列,所述源表包括不具有索引编号的数组集合;
所述第二确定模块,具体用于:将在所述索引辅助表中确定的所述第一行号与所述源表中的所有行号进行匹配,将匹配成功的所述源表中的所述行号确定为所述第二行号,输出所述源表中所述第二行号对应行中的数据作为所述目标数据,并将所述目标数据作为所述索引结果;
所述装置还包括数组索引模块,所述数组索引模块用于在所述根据索引请求获取对应的目标where子句之前,获取所述目标数组类型列对应的标量类型以及创建所述索引辅助表;
所述数组索引模块包括索引辅助表创建单元,所述索引辅助表创建单元用于获取创建的数据字段,所述数据字段存储所述目标数组类型列包含的标量数据;获取创建的行号字段,所述行号字段存储在所述源表中所述标量数据所在行的行号;基于所述数据字段和所述行号字段创建所述索引辅助表。
8.一种计算机设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器用于执行权利要求1-6任一项所述的数组类型列的索引方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6任一项所述的数组类型列的索引方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110164413.3A CN112835905B (zh) | 2021-02-05 | 2021-02-05 | 一种数组类型列的索引方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110164413.3A CN112835905B (zh) | 2021-02-05 | 2021-02-05 | 一种数组类型列的索引方法、装置、设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835905A CN112835905A (zh) | 2021-05-25 |
CN112835905B true CN112835905B (zh) | 2023-08-01 |
Family
ID=75932455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110164413.3A Active CN112835905B (zh) | 2021-02-05 | 2021-02-05 | 一种数组类型列的索引方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835905B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454354B (zh) * | 2022-10-19 | 2023-09-12 | 上海吉贝克信息技术有限公司 | 数据的处理方法、系统、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086382A (zh) * | 2018-07-25 | 2018-12-25 | 上海达梦数据库有限公司 | 一种数据同步方法、装置、设备及存储介质 |
CN110347722A (zh) * | 2019-07-11 | 2019-10-18 | 软通智慧科技有限公司 | 基于HBase的数据获取方法、装置、设备及存储介质 |
CN111259004A (zh) * | 2020-01-08 | 2020-06-09 | 腾讯科技(深圳)有限公司 | 一种存储引擎中数据索引的方法以及相关装置 |
CN114840561A (zh) * | 2022-05-23 | 2022-08-02 | 达梦数据技术(江苏)有限公司 | 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质 |
CN115328917A (zh) * | 2022-08-19 | 2022-11-11 | 上海达梦数据库有限公司 | 一种查询方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009078729A1 (en) * | 2007-12-14 | 2009-06-25 | Fast Search & Transfer As | A method for improving search engine efficiency |
-
2021
- 2021-02-05 CN CN202110164413.3A patent/CN112835905B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086382A (zh) * | 2018-07-25 | 2018-12-25 | 上海达梦数据库有限公司 | 一种数据同步方法、装置、设备及存储介质 |
CN110347722A (zh) * | 2019-07-11 | 2019-10-18 | 软通智慧科技有限公司 | 基于HBase的数据获取方法、装置、设备及存储介质 |
CN111259004A (zh) * | 2020-01-08 | 2020-06-09 | 腾讯科技(深圳)有限公司 | 一种存储引擎中数据索引的方法以及相关装置 |
CN114840561A (zh) * | 2022-05-23 | 2022-08-02 | 达梦数据技术(江苏)有限公司 | 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质 |
CN115328917A (zh) * | 2022-08-19 | 2022-11-11 | 上海达梦数据库有限公司 | 一种查询方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
张文晶.图书馆海量网络学术数据的关联检索技术研究.2019,第第42卷卷(第第11期期),第181-186页. * |
Also Published As
Publication number | Publication date |
---|---|
CN112835905A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10055509B2 (en) | Constructing an in-memory representation of a graph | |
US9218394B2 (en) | Reading rows from memory prior to reading rows from secondary storage | |
US9569485B2 (en) | Optimizing database query | |
US10783142B2 (en) | Efficient data retrieval in staged use of in-memory cursor duration temporary tables | |
US9229961B2 (en) | Database management delete efficiency | |
CN110688544A (zh) | 一种查询数据库的方法、设备及存储介质 | |
CN108959587B (zh) | 基于列存储的数据更新方法、装置、服务器及存储介质 | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
CN113986933A (zh) | 物化视图的创建方法、装置、存储介质及电子设备 | |
CN109815240A (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
CN112835905B (zh) | 一种数组类型列的索引方法、装置、设备以及存储介质 | |
CN109408539B (zh) | 数据操作方法、装置、服务器和存储介质 | |
CN110795494A (zh) | 缓存数据同步异步化的自动化测试方法和装置 | |
US11200230B2 (en) | Cost-based optimization for document-oriented database queries | |
CN109542912B (zh) | 区间数据存储方法、装置、服务器及存储介质 | |
CN114547086B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN113779068B (zh) | 数据查询方法、装置、设备及存储介质 | |
CN116010345A (zh) | 一种实现流批一体数据湖的表服务方案的方法、装置及设备 | |
CN108984720B (zh) | 基于列存储的数据查询方法、装置、服务器及存储介质 | |
CN115795187A (zh) | 资源访问方法、装置及设备 | |
CN109033271B (zh) | 基于列存储的数据插入方法、装置、服务器及存储介质 | |
CN108984719B (zh) | 基于列存储的数据删除方法、装置、服务器及存储介质 | |
CN113448957A (zh) | 一种数据查询方法和装置 | |
CN114185890B (zh) | 一种数据库检索方法、装置、存储介质及电子设备 | |
CN114090837B (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 |