一种数据库索引的自动创建方法及系统技术方案

技术编号:10069935 阅读:180 留言:0更新日期:2014-05-23 13:39
一种数据库索引的自动创建方法及系统,该方法包括:获取待审核的数据库操作语句对应的数据源,实例化数据库的连接;对每一待审核的数据库操作语句处理如下:确定该数据库操作语句使用的数据库表及各数据库表中使用到的索引相关字段;从数据源获取所述数据库表已有索引的字段组合;对每一数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集且尚未创建相应数据库索引时,创建数据库索引。本申请还提供了相应的系统。本申请方案根据待审核的数据库操作语句及样本数据实现了索引的自动创建,提高了索引创建的效率。

【技术实现步骤摘要】
一种数据库索引的自动创建方法及系统
本申请涉及数据库技术,更具体地,涉及数据库索引的创建方法及相应的系统。
技术介绍
索引就像是字典中的目录索引一样,帮助用户更快的找到相应的信息。线上运行的数据库的表的数据量很大,建立高效的索引来增加查询和修改的速度是必要的,数据库大表操作反应慢的话还会影响前端的业务。如果对于业务上的需求进行表的操作时没有合适的索引会造成查询和修改的效率低下,严重影响业务。当新功能上线或者现有功能的逻辑修改时,数据库维护人员要审核即将上线使用的数据库操作语句,例如SQL(结构化查询语言,StructuredQueryLanguage)语句,对于每一条语句要分析其业务逻辑和现有的数据情况来为其建立合适的索引。索引的建立一般依靠数据库维护人员对要审核的语句及对业务的理解和经验来实现,这不仅效率低下,而且也难以保存建立的索引的有效性。
技术实现思路
本申请要解决的技术问题是提供一种数据库索引的自动创建方法及系统。为了解决上述问题,本申请提供了一种数据库索引的自动创建方法,包括:获取待审核的数据库操作语句对应的数据源,根据所述数据源实例化数据库的连接,所述数据源中保存有包含样本数据的数据库信息;对每一待审核的数据库操作语句进行索引创建的处理,如下:确定该数据库操作语句使用的数据库表及各数据库表中该数据库操作语句使用到的索引相关字段;从所述数据源获取所述数据库表已有索引的字段组合;及对每一所述数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,基于该数据库表中的索引相关字段创建数据库索引。较佳地,所述基于该数据库表中的索引相关字段创建数据库索引,包括:先将该数据库表中的所述索引相关字段排列成字段组合,然后基于该数据库表的该字段组合创建数据库索引;其中,将该数据库表中的所述索引相关字段排列成字段组合又包括:所述索引相关字段只有一个时,直接将该索引相关字段作为该字段组合;所述相关索引字段有多个时,先根据所述数据源中该数据库表的样本数据在每一索引相关字段上的唯一值数,分别确定各索引相关字段的权值,唯一值数越大,权值越大;然后根据所述各索引相关字段的所述权值或其修正值从大到小的顺序将所述索引相关字段排列成字段组合;较佳地,根据所述各索引相关字段的所述权值的修正值从大到小的顺序将所述索引相关字段排列成字段组合,其中所述权值的修正值按以下方式得到:对作为左值的每一索引相关字段,如运算符号是等号,对其权值乘以系数k1,否则对其权值乘以系数k2,得到其权值的修正值,k1>k2;和/或对通过动态标签拼接得到的每一索引相关字段,对其权值乘以系数a,得到其权值的修正值,0<a<1。较佳地,所述数据源中该数据库表的样本数据在该数据库表对应于所述数据源中的多个数据库分表时,指所述多个数据库分表中一个分表的样本数据。较佳地,在该数据库表中的索引相关字段组成的集合是该数据库表已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,将该数据库表中的所述索引相关字段排列成字段组合,如满足以下条件中的至少一个,不创建数据库索引,否则,基于该字段组合创建数据库索引:该数据库表的该字段组合与该数据表至少一已有索引的字段组合相同;该数据库表的该字段组合与该数据表至少一已有索引的字段组合中在前的部分组合相同;及该数据库表的该字段组合中包含该数据库表已有的主键索引或至少一唯一性索引的字段组合。较佳地,所述索引相关字段指条件字段和/或排序字段。较佳地,所述待审核的数据库操作语句是执行选择操作、更新操作或删除操作的数据库操作语句。较佳地,对新创建索引逐一评估,如对应数据库表中已有索引的字段组合是该新创建索引的字段组合中前面的部分组合,通过对应的数据源查看该新创建数据库索引和该已有索引的势值的比值是否小于设定阈值,如果小于,删除该新创建数据库索引,否则保留该新创建数据库索引。相应地,本申请还提供了一种数据库索引的自动创建系统,包括数据源和索引创建装置,其中:所述数据源保存有包含样本数据的数据库信息;所述索引创建装置包括:数据库连接模块,用于获取待审核的数据库操作语句对应的数据源,根据所述数据源实例化数据库的连接;索引创建处理模块,用于对每一待审核的数据库操作语句进行索引创建的处理;所述索引创建处理模块又包括:语句信息获取单元,用于确定该数据库操作语句使用的数据库表及各数据库表中该数据库操作语句使用到的索引相关字段;数据库信息获取单元,用于从所述数据源获取所述数据库表已有索引的字段组合;及创建单元,用于对每一所述数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,基于该数据库表中的索引相关字段创建数据库索引。较佳地,所述创建单元基于该数据库表中的索引相关字段创建数据库索引,包括:先将该数据库表中的所述索引相关字段排列成字段组合,然后基于该数据库表的该字段组合创建数据库索引;其中,将该数据库表中的所述索引相关字段排列成字段组合又包括:所述索引相关字段只有一个时,直接将该索引相关字段作为该字段组合;所述相关索引字段有多个时,先根据所述数据源中该数据库表的样本数据在每一索引相关字段上的唯一值数,分别确定各索引相关字段的权值,唯一值数越大,权值越大;然后根据所述各索引相关字段的所述权值或其修正值从大到小的顺序将所述索引相关字段排列成字段组合;较佳地,所述创建单元根据所述各索引相关字段的所述权值的修正值从大到小的顺序将所述索引相关字段排列成字段组合,其中所述权值的修正值按以下方式得到:对作为左值的每一索引相关字段,如运算符号是等号,对其权值乘以系数k1,否则对其权值乘以系数k2,得到其权值的修正值,k1>k2;和/或对通过动态标签拼接得到的每一索引相关字段,对其权值乘以系数a,得到其权值的修正值,0<a<1。较佳地,所述创建单元还用于在该数据库表中的索引相关字段组成的集合是该数据库表已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,将该数据库表中的所述索引相关字段排列成字段组合,如满足以下条件中的至少一个,不创建数据库索引,否则,基于该字段组合创建数据库索引:该数据库表的该字段组合与该数据表至少一已有索引的字段组合相同;该数据库表的该字段组合与该数据表至少一已有索引的字段组合中在前的部分组合相同;及该数据库表的该字段组合中包含该数据库表已有的主键索引或至少一唯一性索引的字段组合。较佳地,所述语句信息获取单元确定的各数据库表中该数据库操作语句使用到的索引相关字段指条件字段和/或排序字段。较佳地,所述索引创建处理模块对每一待审核的数据库操作语句进行索引创建的处理,其中,所述待审核的数据库操作语句是执行选择操作、更新操作或删除操作的数据库操作语句。较佳地,所述索引创建处理模块还包括:索引优化模块,用于对新创建索引逐一评估,如对应数据库表中已有索引的字段组合是该新创建索引的字段组合中前面的部分组合,通过对应的数据源查看该新创建数据库索引和该已有索引的势值的比值是否小于设定阈值,如果小于,删除该新创建数据库索引,否则保留该新创建数据库索引。上述方案根据待审核的如要上线的数据库操作语句及样本数据实现本文档来自技高网...
一种数据库索引的自动创建方法及系统

【技术保护点】
一种数据库索引的自动创建方法,包括:获取待审核的数据库操作语句对应的数据源,根据所述数据源实例化数据库的连接,所述数据源中保存有包含样本数据的数据库信息;对每一待审核的数据库操作语句进行索引创建的处理,如下:确定该数据库操作语句使用的数据库表及各数据库表中该数据库操作语句使用到的索引相关字段;从所述数据源获取所述数据库表已有索引的字段组合;及对每一所述数据库表,在该数据库表中的索引相关字段组成的集合不是该数据库表任一已有索引的字段组合的子集或超集,且尚未创建相应数据库索引时,基于该数据库表中的索引相关字段创建数据库索引。

【技术特征摘要】
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.一种数据库索引的自动创建系统,其特征在于,包括数据源和索引创建装置,其中:所述数据源保存有包含样本数据的数据库信息;...

【专利技术属性】
技术研发人员:王明
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1