CN103810212B - 一种数据库索引的自动创建方法及系统 - Google Patents
一种数据库索引的自动创建方法及系统 Download PDFInfo
- Publication number
- CN103810212B CN103810212B CN201210457130.9A CN201210457130A CN103810212B CN 103810212 B CN103810212 B CN 103810212B CN 201210457130 A CN201210457130 A CN 201210457130A CN 103810212 B CN103810212 B CN 103810212B
- Authority
- CN
- China
- Prior art keywords
- index
- field
- database
- database table
- combination
- 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
- G06F16/2228—Indexing structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (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
一种数据库索引的自动创建方法及系统,该方法包括:获取待审核的数据库操作语句对应的数据源,实例化数据库的连接;对每一待审核的数据库操作语句处理如下:确定该数据库操作语句使用的数据库表及各数据库表中使用到的索引相关字段;从数据源获取所述数据库表已有索引的字段组合;对每一数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集且尚未创建相应数据库索引时,创建数据库索引。本申请还提供了相应的系统。本申请方案根据待审核的数据库操作语句及样本数据实现了索引的自动创建,提高了索引创建的效率。
Description
技术领域
本申请涉及数据库技术,更具体地,涉及数据库索引的创建方法及相应的系统。
背景技术
索引就像是字典中的目录索引一样,帮助用户更快的找到相应的信息。线上运行的数据库的表的数据量很大,建立高效的索引来增加查询和修改的速度是必要的,数据库大表操作反应慢的话还会影响前端的业务。如果对于业务上的需求进行表的操作时没有合适的索引会造成查询和修改的效率低下,严重影响业务。
当新功能上线或者现有功能的逻辑修改时,数据库维护人员要审核即将上线使用的数据库操作语句,例如SQL(结构化查询语言,Structured QueryLanguage)语句,对于每一条语句要分析其业务逻辑和现有的数据情况来为其建立合适的索引。索引的建立一般依靠数据库维护人员对要审核的语句及对业务的理解和经验来实现,这不仅效率低下,而且也难以保存建立的索引的有效性。
发明内容
本申请要解决的技术问题是提供一种数据库索引的自动创建方法及系统。
为了解决上述问题,本申请提供了一种数据库索引的自动创建方法,包括:
获取待审核的数据库操作语句对应的数据源,根据所述数据源实例化数据库的连接,所述数据源中保存有包含样本数据的数据库信息;
对每一待审核的数据库操作语句进行索引创建的处理,如下:
确定该数据库操作语句使用的数据库表及各数据库表中该数据库操作语句使用到的索引相关字段;
从所述数据源获取所述数据库表已有索引的字段组合;及
对每一所述数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,基于该数据库表中的索引相关字段创建数据库索引。
较佳地,
所述基于该数据库表中的索引相关字段创建数据库索引,包括:
先将该数据库表中的所述索引相关字段排列成字段组合,然后基于该数据库表的该字段组合创建数据库索引;
其中,将该数据库表中的所述索引相关字段排列成字段组合又包括:
所述索引相关字段只有一个时,直接将该索引相关字段作为该字段组合;
所述相关索引字段有多个时,先根据所述数据源中该数据库表的样本数据在每一索引相关字段上的唯一值数,分别确定各索引相关字段的权值,唯一值数越大,权值越大;然后根据所述各索引相关字段的所述权值或其修正值从大到小的顺序将所述索引相关字段排列成字段组合;
较佳地,
根据所述各索引相关字段的所述权值的修正值从大到小的顺序将所述索引相关字段排列成字段组合,其中所述权值的修正值按以下方式得到:
对作为左值的每一索引相关字段,如运算符号是等号,对其权值乘以系数k1,否则对其权值乘以系数k2,得到其权值的修正值,k1>k2;和/或
对通过动态标签拼接得到的每一索引相关字段,对其权值乘以系数a,得到其权值的修正值,0<a<1。
较佳地,
所述数据源中该数据库表的样本数据在该数据库表对应于所述数据源中的多个数据库分表时,指所述多个数据库分表中一个分表的样本数据。
较佳地,
在该数据库表中的索引相关字段组成的集合是该数据库表已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,将该数据库表中的所述索引相关字段排列成字段组合,如满足以下条件中的至少一个,不创建数据库索引,否则,基于该字段组合创建数据库索引:
该数据库表的该字段组合与该数据表至少一已有索引的字段组合相同;
该数据库表的该字段组合与该数据表至少一已有索引的字段组合中在前的部分组合相同;及
该数据库表的该字段组合中包含该数据库表已有的主键索引或至少一唯一性索引的字段组合。
较佳地,
所述索引相关字段指条件字段和/或排序字段。
较佳地,
所述待审核的数据库操作语句是执行选择操作、更新操作或删除操作的数据库操作语句。
较佳地,
对新创建索引逐一评估,如对应数据库表中已有索引的字段组合是该新创建索引的字段组合中前面的部分组合,通过对应的数据源查看该新创建数据库索引和该已有索引的势值的比值是否小于设定阈值,如果小于,删除该新创建数据库索引,否则保留该新创建数据库索引。
相应地,本申请还提供了一种数据库索引的自动创建系统,包括数据源和索引创建装置,其中:
所述数据源保存有包含样本数据的数据库信息;
所述索引创建装置包括:
数据库连接模块,用于获取待审核的数据库操作语句对应的数据源,根据所述数据源实例化数据库的连接;
索引创建处理模块,用于对每一待审核的数据库操作语句进行索引创建的处理;所述索引创建处理模块又包括:
语句信息获取单元,用于确定该数据库操作语句使用的数据库表及各数据库表中该数据库操作语句使用到的索引相关字段;
数据库信息获取单元,用于从所述数据源获取所述数据库表已有索引的字段组合;及
创建单元,用于对每一所述数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,基于该数据库表中的索引相关字段创建数据库索引。
较佳地,
所述创建单元基于该数据库表中的索引相关字段创建数据库索引,包括:
先将该数据库表中的所述索引相关字段排列成字段组合,然后基于该数据库表的该字段组合创建数据库索引;
其中,将该数据库表中的所述索引相关字段排列成字段组合又包括:
所述索引相关字段只有一个时,直接将该索引相关字段作为该字段组合;
所述相关索引字段有多个时,先根据所述数据源中该数据库表的样本数据在每一索引相关字段上的唯一值数,分别确定各索引相关字段的权值,唯一值数越大,权值越大;然后根据所述各索引相关字段的所述权值或其修正值从大到小的顺序将所述索引相关字段排列成字段组合;
较佳地,
所述创建单元根据所述各索引相关字段的所述权值的修正值从大到小的顺序将所述索引相关字段排列成字段组合,其中所述权值的修正值按以下方式得到:
对作为左值的每一索引相关字段,如运算符号是等号,对其权值乘以系数k1,否则对其权值乘以系数k2,得到其权值的修正值,k1>k2;和/或
对通过动态标签拼接得到的每一索引相关字段,对其权值乘以系数a,得到其权值的修正值,0<a<1。
较佳地,
所述创建单元还用于在该数据库表中的索引相关字段组成的集合是该数据库表已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,将该数据库表中的所述索引相关字段排列成字段组合,如满足以下条件中的至少一个,不创建数据库索引,否则,基于该字段组合创建数据库索引:
该数据库表的该字段组合与该数据表至少一已有索引的字段组合相同;
该数据库表的该字段组合与该数据表至少一已有索引的字段组合中在前的部分组合相同;及
该数据库表的该字段组合中包含该数据库表已有的主键索引或至少一唯一性索引的字段组合。
较佳地,
所述语句信息获取单元确定的各数据库表中该数据库操作语句使用到的索引相关字段指条件字段和/或排序字段。
较佳地,
所述索引创建处理模块对每一待审核的数据库操作语句进行索引创建的处理,其中,所述待审核的数据库操作语句是执行选择操作、更新操作或删除操作的数据库操作语句。
较佳地,
所述索引创建处理模块还包括:索引优化模块,用于对新创建索引逐一评估,如对应数据库表中已有索引的字段组合是该新创建索引的字段组合中前面的部分组合,通过对应的数据源查看该新创建数据库索引和该已有索引的势值的比值是否小于设定阈值,如果小于,删除该新创建数据库索引,否则保留该新创建数据库索引。
上述方案根据待审核的如要上线的数据库操作语句及样本数据实现了索引的自动创建,提高了索引创建的效率。进一步地,还可以根据样本数据计算、调整索引相关字段的权值,确定合适的字段组合,基于该字段组合创建索引,还可以基于该字段组合与已有索引的字段组合的关系避免创建不必要的索引,提高了所创建的索引的有效性。上述方案还可以对生成的索引进行评估,删除性能与已有索引相差不大的索引,提高系统的整体性能。
附图说明
图1是本申请实施例方法的总体流程图;
图2是图1中步骤120的分解流程图;
图3是图2中步骤230中创建数据库索引的分解流程图;
图4是本申请实施例系统的模块图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
如图1所示,本实施例数据库索引的自动创建方法包括:
步骤110,获取待审核的数据库操作语句对应的数据源,根据所述数据源实例化数据库的连接,所述数据源中保存有包含样本数据的数据库信息;
上述数据源可以直接采用待审核的数据库操作语句如SQL语句上线后使用的数据源,也可以采用相应的测试用的数据源,这些数据源中的样本数据的分布可以大致描绘出业务的逻辑,因而可用于自动创建数据库索引。
步骤120,对每一待审核的数据库操作语句进行索引创建的处理。
本实施例中,待审核的数据库操作语句为选择(select)、更新(update)或者删除(delete)操作的语句,建立(insert)语句一般不用来建立索引。这些待审核的语句之前未建立相应的数据库索引。
如图2所示,步骤120又可以细分为以下步骤:
步骤210,确定该数据库操作语句使用的数据库表及各数据库表中该数据库操作语句使用到的索引相关字段;
以SQL语句为例,SQL语句中一般均会用到数据库表名和相关的字段,其中可用于建立数据库索引以加快操作速度的字段称为索引相关字段,本实施例获取的索引相关字段指条件字段和/或排序字段。
SQL语句中可能会用到一个或多个数据库表,在一个示例中,将待审核的该SQL语句使用的每一数据库表的表名及该数据库表中该sql语句使用的条件字段和排序字段保存如下:
表名:tab_k
排序字段:col1,col2,col3.....colm
条件字段:col1,col2,col3......coln
步骤220,从数据源获取所述数据库表已有索引的字段组合;
所述数据库表已有索引可以分为三类:主键索引、唯一性索引和普通索引。其中主键索引和唯一性索引中的一个值均对应于数据库表中的一个记录,而普通索引中的一个值可能对应于多条记录。主键索引可以看成是一种特殊的唯一性索引。
基于多个字段创建的索引,各字段排列的先后顺序不同,得到的索引也不相同。某一索引对应的按序排列的多个字段可以称为该索引的字段组合。譬如,字段组合为col1_col2_col3的索引与字段组合为col2_col1_col3的索引虽然涉及的字段集合相同,但字段组合不同,是不同的索引。
因为不同的语句可能会使用到相同的表,因而上述从数据源获取所述数据库表已有索引的字段组合也可以是之前获取缓存的。
步骤230,对每一所述数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,基于该数据库表中的索引相关字段创建数据库索引。
所谓某个集合不是某个字段组合的子集或超集,指该集合不是该字段组合所包含字段组成的集合的子集或超集。这里的子集、超集包括了两个集合相等的情况。在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集时,说明数据源的数据库中不存在所述索引相关字段的索引。上述“尚未创建相应数据库索引”指对之前的待审核SQL处理时还未基于所述索引相关字段创建数据库索引。在这两个条件满足时,基于该数据库表中的索引相关字段创建数据库索引。
基于该数据库表中的索引相关字段创建数据库索引时,如索引相关字段有多个,需先将该数据库表中的所述索引相关字段排列成字段组合,然后基于该数据库表的该字段组合创建数据库索引。如图3所示,其处理包括:
步骤310,判断该数据库表中的索引相关字段是否只有一个,如是,执行步骤320,否则,执行步骤330;
步骤320,直接将该索引相关字段作为该字段组合,转入步骤350;
步骤330,根据所述数据源中该数据库表的样本数据在每一索引相关字段上的唯一值数,分别确定各索引相关字段的权值,唯一值数越大,权值越大;
数据源中该数据库表的样本数据在每一索引相关字段上的唯一值数(取值不同的记录的数目)可以通过将各个索引相关字段分别拼成查询语句,到对应的数据源查询该数据库表的样本数据而得到。SQL语句中的表名通常是逻辑表名,可能对应于数据库中的多个分表,此时可以将其中的某一个分表如第一个分表中的样本数据作为该数据库表的样本数据。可以将表中的所有记录当做本步骤中用于计算权值样本数据,也可以将其中的部分数据记录作为本步骤中用于计算权值样本数据。如在表中记录很多时,取其中的1000条记录作为样本数据。
本步骤中,可以直接将唯一值数作为权值,也可以归一化后再作为权值,本申请对此不做限定。
步骤340,根据所述各索引相关字段的所述权值或其修正值从大到小的顺序将所述索引相关字段排列成字段组合;
本步骤中所述权值的修正值可以按以下方式得到:
对作为左值的每一索引相关字段,如运算符号是等号,对其权值乘以系数k1,否则对其权值乘以系数k2,得到其权值的修正值,k1>k2。作为左值时运算符号是等号的索引相关字段在查询时可以一次筛除更多的值。
和/或
对通过动态标签拼接得到的每一索引相关字段(如),对其权值乘以系数a,得到其权值的修正值,0<a<1。如在sqlmap(一种开发人员用来调用所有的sql语句的文件)中,有动态(dynamic)标签,根据前台的调用动态拼接SQL。
以上各步骤已经将该数据库表中的所述索引相关字段排列成字段组合。
步骤350,基于该数据库表的该字段组合创建数据库索引。
本步中的创建可以在审核每个语句时就执行,也可以在审核完多个语句后一起执行,本申请对此不做局限。
上述步骤230只是在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时进行索引创建。而在该数据库表中的索引相关字段组成的集合是该数据库表已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,在某些情况下也可以创建索引以提高查询效率。具体地,在步骤230中,针对这一情况,可以先按上述方式将该数据库表中的所述索引相关字段排列成字段组合,如满足以下条件1~3中的至少一个,不创建数据库索引,否则,基于该数据库表的该字段组合创建数据库索引:
条件1:该数据库表的该字段组合与该数据表至少一已有索引的字段组合相同;
此条件满足时,表明数据源中该数据表已有该字段组合的索引。
条件2:该数据库表的该字段组合与该数据表至少一已有索引的字段组合中在前的部分组合相同;
此条件满足时,表明数据源中该数据表的已有索引已可以实现待审核SQL语句中索引相关字段的查询。例如该字段组合为col1_col2_col3,而该数据表的一个已有索引的字段组合为col1_col2_col3_col4,则基于col1_col2_col3创建的索引的结构已包含在该已有索引的结构中。文中,字段组合中在前的部分组合是从第一个字段开始的部分组合。
条件3:该数据库表的该字段组合中包含该数据库表已有的主键索引或至少一唯一性索引的字段组合。
本条件也就是说,该数据库表已有的主键索引或至少一唯一性索引的字段组合是该数据库表的该字段组合中的一段,如该数据库表的该字段组合为col1_col2_col3,该数据库表已有的一个唯一性索引的字段组合为col1_col2。此条件满足时,使用已有的主键索引或唯一性索引就足够了,没有必要再创建新的索引。
上述流程中,在创建了数据库索引之后,还可以对新创建的数据库索引进行评估,根据评估结果予以保留或删除。
例如,对于每一新创建索引,如对应数据库表中已有索引的字段组合是该新创建索引的字段组合中前面的部分组合,通过对应的数据源查看该新创建数据库索引和该已有索引的势值(Cardinality)的比值是否小于设定阈值,如果小于,删除该新创建数据库索引,否则保留该新创建数据库索引。索引的势值可以通过查询数据库得到,两个索引的势值的比值小于阈值,说明两个索引的效率相差不大,因而可以取消一个以减小索引对资源的占用。
相应地,本实施例还提供了一种数据库索引的自动创建系统,如图4所示,包括数据源10和索引创建装置20,其中:
所述数据源保存有包含样本数据的数据库信息;
所述索引创建装置20包括:
数据库连接模块22,用于获取待审核的数据库操作语句对应的数据源,根据所述数据源实例化数据库的连接;
索引创建处理模块24,用于对每一待审核的数据库操作语句进行索引创建的处理;所述索引创建处理模块又包括:
语句信息获取单元240,用于确定该数据库操作语句使用的数据库表及各数据库表中该数据库操作语句使用到的索引相关字段;
数据库信息获取单元242,用于从所述数据源获取所述数据库表已有索引的字段组合;及
创建单元244,用于对每一所述数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,基于该数据库表中的索引相关字段创建数据库索引。
较佳地,
所述创建单元244基于该数据库表中的索引相关字段创建数据库索引,包括:
先将该数据库表中的所述索引相关字段排列成字段组合,然后基于该数据库表的该字段组合创建数据库索引;
其中,将该数据库表中的所述索引相关字段排列成字段组合又包括:
所述索引相关字段只有一个时,直接将该索引相关字段作为该字段组合;
所述相关索引字段有多个时,先根据所述数据源中该数据库表的样本数据在每一索引相关字段上的唯一值数,分别确定各索引相关字段的权值,唯一值数越大,权值越大;然后根据所述各索引相关字段的所述权值或其修正值从大到小的顺序将所述索引相关字段排列成字段组合;
较佳地,
所述创建单元244根据所述各索引相关字段的所述权值的修正值从大到小的顺序将所述索引相关字段排列成字段组合,其中所述权值的修正值按以下方式得到:
对作为左值的每一索引相关字段,如运算符号是等号,对其权值乘以系数k1,否则对其权值乘以系数k2,得到其权值的修正值,k1>k2;和/或
对通过动态标签拼接得到的每一索引相关字段,对其权值乘以系数a,得到其权值的修正值,0<a<1。
较佳地,
所述创建单元244还用于在该数据库表中的索引相关字段组成的集合是该数据库表已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,将该数据库表中的所述索引相关字段排列成字段组合,如满足以下条件中的至少一个,不创建数据库索引,否则,基于该字段组合创建数据库索引:
该数据库表的该字段组合与该数据表至少一已有索引的字段组合相同;
该数据库表的该字段组合与该数据表至少一已有索引的字段组合中在前的部分组合相同;及
该数据库表的该字段组合中包含该数据库表已有的主键索引或至少一唯一性索引的字段组合。
较佳地,
所述语句信息获取单元240确定的各数据库表中该数据库操作语句使用到的索引相关字段指条件字段和/或排序字段。
较佳地,
所述索引创建处理模块对每一待审核的数据库操作语句进行索引创建的处理,其中,所述待审核的数据库操作语句是执行选择操作、更新操作或删除操作的数据库操作语句。
较佳地,
所述索引创建处理模块还包括:索引优化模块,用于对新创建索引逐一评估,如对应数据库表中已有索引的字段组合是该新创建索引的字段组合中前面的部分组合,通过对应的数据源查看该新创建数据库索引和该已有索引的势值的比值是否小于设定阈值,如果小于,删除该新创建数据库索引,否则保留该新创建数据库索引。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种数据库索引的自动创建方法,包括:
获取待审核的数据库操作语句对应的数据源,根据所述数据源实例化数据库的连接,所述数据源中保存有包含样本数据的数据库信息;
对每一待审核的数据库操作语句进行索引创建的处理,如下:
确定该数据库操作语句使用的数据库表及各数据库表中该数据库操作语句使用到的索引相关字段;
从所述数据源获取所述数据库表已有索引的字段组合;及
对每一所述数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,基于该数据库表中的索引相关字段创建数据库索引。
2.如权利要求1所述的方法,其特征在于:
所述基于该数据库表中的索引相关字段创建数据库索引,包括:
先将该数据库表中的所述索引相关字段排列成字段组合,然后基于该数据库表的该字段组合创建数据库索引;
其中,将该数据库表中的所述索引相关字段排列成字段组合又包括:
所述索引相关字段只有一个时,直接将该索引相关字段作为该字段组合;
所述相关索引字段有多个时,先根据所述数据源中该数据库表的样本数据在每一索引相关字段上的唯一值数,分别确定各索引相关字段的权值,唯一值数越大,权值越大;然后根据所述各索引相关字段的所述权值或其修正值从大到小的顺序将所述索引相关字段排列成字段组合。
3.如权利要求2所述的方法,其特征在于:
根据所述各索引相关字段的所述权值的修正值从大到小的顺序将所述索引相关字段排列成字段组合,其中所述权值的修正值按以下方式得到:
对作为左值的每一索引相关字段,如运算符号是等号,对其权值乘以系数k1,否则对其权值乘以系数k2,得到其权值的修正值,k1>k2;和/或
对通过动态标签拼接得到的每一索引相关字段,对其权值乘以系数a,得到其权值的修正值,0<a<1。
4.如权利要求2所述的方法,其特征在于:
所述数据源中该数据库表的样本数据在该数据库表对应于所述数据源中的多个数据库分表时,指所述多个数据库分表中一个分表的样本数据。
5.如权利要求2所述的方法,其特征在于,还包括:
在该数据库表中的索引相关字段组成的集合是该数据库表已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,将该数据库表中的所述索引相关字段排列成字段组合,如满足以下条件中的至少一个,不创建数据库索引,否则,基于该字段组合创建数据库索引:
该数据库表的该字段组合与该数据表至少一已有索引的字段组合相同;
该数据库表的该字段组合与该数据表至少一已有索引的字段组合中在前的部分组合相同;及
该数据库表的该字段组合中包含该数据库表已有的主键索引或至少一唯一性索引的字段组合。
6.如权利要求1或2或3或4或5所述的方法,其特征在于:
所述索引相关字段指条件字段和/或排序字段。
7.如权利要求6所述的方法,其特征在于:
所述待审核的数据库操作语句是执行选择操作、更新操作或删除操作的数据库操作语句。
8.如权利要求2或3或4或5所述的方法,其特征在于,还包括:
对新创建索引逐一评估,如对应数据库表中已有索引的字段组合是该新创建索引的字段组合中前面的部分组合,通过对应的数据源查看该新创建数据库索引和该已有索引的势值的比值是否小于设定阈值,如果小于,删除该新创建数据库索引,否则保留该新创建数据库索引。
9.一种数据库索引的自动创建系统,其特征在于,包括数据源和索引创建装置,其中:
所述数据源保存有包含样本数据的数据库信息;
所述索引创建装置包括:
数据库连接模块,用于获取待审核的数据库操作语句对应的数据源,根据所述数据源实例化数据库的连接;
索引创建处理模块,用于对每一待审核的数据库操作语句进行索引创建的处理;所述索引创建处理模块又包括:
语句信息获取单元,用于确定该数据库操作语句使用的数据库表及各数据库表中该数据库操作语句使用到的索引相关字段;
数据库信息获取单元,用于从所述数据源获取所述数据库表已有索引的字段组合;及
创建单元,用于对每一所述数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,基于该数据库表中的索引相关字段创建数据库索引。
10.如权利要求9所述的系统,其特征在于:
所述创建单元基于该数据库表中的索引相关字段创建数据库索引,包括:
先将该数据库表中的所述索引相关字段排列成字段组合,然后基于该数据库表的该字段组合创建数据库索引;
其中,将该数据库表中的所述索引相关字段排列成字段组合又包括:
所述索引相关字段只有一个时,直接将该索引相关字段作为该字段组合;
所述相关索引字段有多个时,先根据所述数据源中该数据库表的样本数据在每一索引相关字段上的唯一值数,分别确定各索引相关字段的权值,唯一值数越大,权值越大;然后根据所述各索引相关字段的所述权值或其修正值从大到小的顺序将所述索引相关字段排列成字段组合。
11.如权利要求10所述的系统,其特征在于:
所述创建单元根据所述各索引相关字段的所述权值的修正值从大到小的顺序将所述索引相关字段排列成字段组合,其中所述权值的修正值按以下方式得到:
对作为左值的每一索引相关字段,如运算符号是等号,对其权值乘以系数k1,否则对其权值乘以系数k2,得到其权值的修正值,k1>k2;和/或
对通过动态标签拼接得到的每一索引相关字段,对其权值乘以系数a,得到其权值的修正值,0<a<1。
12.如权利要求10所述的系统,其特征在于:
所述创建单元还用于在该数据库表中的索引相关字段组成的集合是该数据库表已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,将该数据库表中的所述索引相关字段排列成字段组合,如满足以下条件中的至少一个,不创建数据库索引,否则,基于该字段组合创建数据库索引:
该数据库表的该字段组合与该数据表至少一已有索引的字段组合相同;
该数据库表的该字段组合与该数据表至少一已有索引的字段组合中在前的部分组合相同;及
该数据库表的该字段组合中包含该数据库表已有的主键索引或至少一唯一性索引的字段组合。
13.如权利要求9或10或11或12所述的系统,其特征在于:
所述语句信息获取单元确定的各数据库表中该数据库操作语句使用到的索引相关字段指条件字段和/或排序字段。
14.如权利要求13所述的系统,其特征在于:
所述索引创建处理模块对每一待审核的数据库操作语句进行索引创建的处理,其中,所述待审核的数据库操作语句是执行选择操作、更新操作或删除操作的数据库操作语句。
15.如权利要求10或11或12所述的系统,其特征在于:
所述索引创建处理模块还包括:索引优化模块,用于对新创建索引逐一评估,如对应数据库表中已有索引的字段组合是该新创建索引的字段组合中前面的部分组合,通过对应的数据源查看该新创建数据库索引和该已有索引的势值的比值是否小于设定阈值,如果小于,删除该新创建数据库索引,否则保留该新创建数据库索引。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210457130.9A CN103810212B (zh) | 2012-11-14 | 2012-11-14 | 一种数据库索引的自动创建方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210457130.9A CN103810212B (zh) | 2012-11-14 | 2012-11-14 | 一种数据库索引的自动创建方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103810212A CN103810212A (zh) | 2014-05-21 |
CN103810212B true CN103810212B (zh) | 2017-05-24 |
Family
ID=50706995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210457130.9A Active CN103810212B (zh) | 2012-11-14 | 2012-11-14 | 一种数据库索引的自动创建方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103810212B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105320679B (zh) * | 2014-07-11 | 2019-05-24 | 中国移动通信集团重庆有限公司 | 一种数据表索引集合生成方法及装置 |
CN105447030B (zh) * | 2014-08-29 | 2019-06-11 | 阿里巴巴集团控股有限公司 | 一种索引处理方法与设备 |
CN104268298B (zh) * | 2014-10-27 | 2018-05-04 | 中电海康集团有限公司 | 一种创建数据库索引及其查询的方法 |
TWI526857B (zh) * | 2014-11-06 | 2016-03-21 | The database acceleration method is used to calculate the index value and the hybrid layer cache | |
CN105701098B (zh) | 2014-11-25 | 2019-07-09 | 国际商业机器公司 | 针对数据库中的表生成索引的方法和装置 |
CN104537078B (zh) * | 2014-12-31 | 2018-02-27 | 天津南大通用数据技术股份有限公司 | 一种基于滑块的目录索引优化方法 |
CN105095393B (zh) * | 2015-06-30 | 2018-11-16 | 努比亚技术有限公司 | 一种数据存储方法及装置 |
CN105045851A (zh) * | 2015-07-07 | 2015-11-11 | 福建天晴数码有限公司 | 根据日志分析自动创建数据库索引的方法及系统 |
CN107016018B (zh) * | 2015-10-23 | 2021-04-09 | 阿里巴巴集团控股有限公司 | 数据库索引创建方法及装置 |
CN107016019B (zh) * | 2015-10-23 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 数据库索引创建方法及装置 |
CN106815260B (zh) * | 2015-12-01 | 2021-05-04 | 阿里巴巴集团控股有限公司 | 一种索引建立方法及设备 |
CN108460052B (zh) * | 2017-02-22 | 2022-11-01 | 中兴通讯股份有限公司 | 一种自动创建索引的方法、装置及数据库系统 |
CN110019971B (zh) * | 2017-09-21 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 一种索引创建方法、装置及数据库系统 |
CN109145004A (zh) * | 2018-08-29 | 2019-01-04 | 智慧互通科技有限公司 | 一种创建数据库索引的方法及装置 |
CN109271455B (zh) * | 2018-11-12 | 2021-04-09 | 武汉达梦数据库有限公司 | 一种数据同步时数据表索引的创建方法 |
CN112148725B (zh) * | 2019-06-26 | 2022-12-06 | 金篆信科有限责任公司 | 一种实现全局唯一索引的方法及装置 |
CN110532264B (zh) * | 2019-08-08 | 2022-04-15 | 杭州广立微电子股份有限公司 | 一种集成电路测试系统及其面向行的数据库管理系统 |
CN110704437B (zh) * | 2019-09-26 | 2022-05-20 | 上海达梦数据库有限公司 | 数据库查询语句的修改方法、装置、设备和存储介质 |
CN110750555A (zh) * | 2019-10-22 | 2020-02-04 | 中国工商银行股份有限公司 | 用于生成索引的方法、装置、计算设备以及介质 |
CN110825739B (zh) * | 2019-10-30 | 2021-07-16 | 京东数字科技控股有限公司 | 建表语句生成方法、装置、设备及存储介质 |
CN112347146B (zh) * | 2020-10-22 | 2024-05-14 | 深圳前海微众银行股份有限公司 | 一种索引推荐方法及装置 |
CN112988758B (zh) * | 2021-04-26 | 2021-08-10 | 北京芯愿景软件技术股份有限公司 | 目标对象定位方法、装置、电子设备和存储介质 |
CN113590632B (zh) * | 2021-08-11 | 2023-12-19 | 北京云拓科技有限公司 | 数据库索引创建方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101102357A (zh) * | 2006-07-05 | 2008-01-09 | 英业达股份有限公司 | 自动排序系统及其方法 |
CN101339559A (zh) * | 2008-07-18 | 2009-01-07 | 北京航空航天大学 | 一种数据持久化实现方法 |
CN102254021A (zh) * | 2011-07-26 | 2011-11-23 | 北京市计算中心 | 基于虚拟机管理系统的数据库构建方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102271A1 (en) * | 2003-08-01 | 2005-05-12 | Gavin Robertson | Indexes with embedded data |
US7917499B2 (en) * | 2006-06-30 | 2011-03-29 | Microsoft Corporation | Updating adaptive, deferred, incremental indexes |
-
2012
- 2012-11-14 CN CN201210457130.9A patent/CN103810212B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101102357A (zh) * | 2006-07-05 | 2008-01-09 | 英业达股份有限公司 | 自动排序系统及其方法 |
CN101339559A (zh) * | 2008-07-18 | 2009-01-07 | 北京航空航天大学 | 一种数据持久化实现方法 |
CN102254021A (zh) * | 2011-07-26 | 2011-11-23 | 北京市计算中心 | 基于虚拟机管理系统的数据库构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103810212A (zh) | 2014-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103810212B (zh) | 一种数据库索引的自动创建方法及系统 | |
US10545981B2 (en) | Virtual repository management | |
CN109840256B (zh) | 一种基于业务实体的查询实现方法 | |
US7930322B2 (en) | Text based schema discovery and information extraction | |
US7373341B2 (en) | Computer readable medium, method and apparatus for preserving filtering conditions to query multilingual data sources at various locales when regenerating a report | |
KR20170021227A (ko) | 온톨로지 매핑 방법 및 장치 | |
US20090182755A1 (en) | Method and system for discovery and modification of data cluster and synonyms | |
US20090259670A1 (en) | Apparatus and Method for Conditioning Semi-Structured Text for use as a Structured Data Source | |
CN108182972A (zh) | 基于分词网络的中文疾病诊断的智能编码方法及系统 | |
US8166075B2 (en) | Method for mapping an X500 data model onto a relational database | |
CN107895018A (zh) | 数据库修改sql生成方法、系统、存储介质及计算机设备 | |
CN111008020A (zh) | 将逻辑表达式解析为通用查询语句的方法 | |
CN101957860B (zh) | 一种发布、搜索信息的方法及装置 | |
CN105095436A (zh) | 数据源数据自动建模方法 | |
CN103678396B (zh) | 一种基于数据模型的数据备份方法和装置 | |
CN111241299A (zh) | 一种法律咨询的知识图谱自动构建方法及其检索系统 | |
CN117216109A (zh) | 一种多类型混合数据的数据查询方法、装置及存储介质 | |
US10936681B2 (en) | Generalized search engine for abstract data types with skimming and approximate retrieval | |
CN109918661A (zh) | 同义词获取方法及装置 | |
CN115730039A (zh) | 基于ElasticSearch的智能检索加速方法、设备及存储介质 | |
CN112905627B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110147396A (zh) | 一种映射关系生成方法及装置 | |
CN108664573A (zh) | 一种具有双通道数据库的大数据快速处理系统及方法 | |
CN108460092A (zh) | 包含数据库内置函数的sql查询语句自动生成方法及系统 | |
CN113407678A (zh) | 知识图谱构建方法、装置和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |