一种数据表索引创建方法及装置制造方法及图纸

技术编号:22444409 阅读:18 留言:0更新日期:2019-11-02 04:22
本发明专利技术公开了一种数据表索引创建方法,包括以下步骤:确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;确定该索引列的高频数据值和非高频数据值;在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中;如果为非高频数据值,则在为该非高频数据值创建索引;遍历完毕后,索引创建完毕。本发明专利技术能够解决现有的索引技术针对数据不均衡分布时的两难局面,显著提高查询效率。

A method and device for creating data table index

【技术实现步骤摘要】
一种数据表索引创建方法及装置
本专利技术涉及数据库技术,具体涉及一种数据表索引创建方法及装置。
技术介绍
现有的数据库索引技术是对整张数据表根据某个列或者列组合进行索引,在数据分布比较均匀的情况下非常有效,但当数据不均衡分布时,比如某几个数据值占比非常高,其他大多数数据值占比很低时,则产生两难局面:如果查询时使用索引,对于查询占比低的数据值查询效率提升明显,而如果查询占比高的数据值时则效率反而会明显下降;而如果查询时不使用索引,那么创建索引非但没有用处,反而会占用空间,影响增删改操作的效率。
技术实现思路
为了解决上述问题,本专利技术提出了一种数据表索引创建方法,包括以下步骤:确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的;确定该索引列的高频数据值和非高频数据值;在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引;遍历完毕后,索引创建完毕。进一步地,当所述数据表中的变化量达到设定的比例时重新进行数据表索引的创建。进一步地,所述存放空间保存的为该列索引的高频数据值块,不为该列索引的高频数据值创建索引;所有非高频数据值的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。进一步地,所述存放空间保存的为该列索引的高频数据值表,所述高频数据值表包括高频数据值及其占比;在将当前的高频数据值保存在存放空间的同时,将其占比也保存在存放空间,并为其创建索引;所述高频数据值表中高频数据值的保存按照高频数据值在该索引列中的所有数据值中的占比由大到小保存。进一步地,所述该索引列的高频数据值和非高频数据值的确定方法由不同数据值在该索引列中的所有数据值中的占比决定,具体为,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值;所述阈值的大小根据不同数据库各自的索引有效性确定。进一步地,所述阈值为0.01。一种数据表索引的创建装置,包括:统计模块,用于确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的;高频数据值的存放空间创建模块,用于确定该索引列的高频数据值和非高频数据值;在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;索引创建模块,用于遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引。进一步地,所述存放空间保存的为该列索引的高频数据值块,不为该列索引的高频数据值创建索引;所有非高频数据值的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。进一步地,所述存放空间保存的为该列索引的高频数据值表,所述高频数据值表包括高频数据值及其占比;在将当前的高频数据值保存在存放空间的同时,将其占比也保存在存放空间,并未其创建索引;所述高频数据值表中高频数据值的存放按照高频数据值在该索引列中的所有数据值中的占比的大小保存。进一步地,所述该索引列的高频数据值和非高频数据值的确定方法由不同数据值在该索引列中的所有数据值中的占比决定,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值;所述阈值的大小根据不同数据库各自的索引有效性确定。与现有技术相比,本专利技术具有以下有益效果:本专利技术采用与现有数据库索引不同的方法,对于数据分布不均衡的表,并不是简单地全表创建索引,而是设定一个合理的阈值,对于在索引列中占比超过该阈值的值不创建索引,其他值创建索引,并将不创建索引的高频列值单独存放在一个数据块中,方便查询语句执行时进行比对,由此解决现有的索引技术针对数据不均衡分布时的两难局面,显著提高查询效率。附图说明图1为本专利技术实施例1方法的流程图。具体实施方式实施例1:本专利技术提出的数据表索引创建方法由如下步骤组成:1、确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的。2、确定该索引列的高频数据值和非高频数据值,其确定方法由不同数据值在该索引列中的所有数据值中的占比决定,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值。由于各类数据库自身实现技术的差异,索引对多高选择度的数据能够起到提升查询效率的作用是不一样的,因此,所述阈值的大小根据不同数据库各自的索引有效性确定。本实施例中阈值的经验值为0.01。3、在该索引列的索引文件的开头划分一块空间用于存放所有的高频数据值,所述一块空间为该列索引的高频数据值块。假设所设阈值为x,则不同的高频数据值的种数不会超过1/x种,因此高频数据值块的大小只需要很小的空间,且可以在内存中进行缓存,查询某一数据值是否为高频数据值的查询效率也非常高,在整个查询语句的执行开销中,这部分开销可以忽略不计。4、遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在高频列值数据块中且不为该高频数据值创建索引,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引。5、遍历完毕后,索引创建完毕,所有非高频数据值的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。6、当数据表变化量达到设定的比例时(如2%)或者数据块管理员执行重建索引命令时,重新按照步骤1-5重建索引。实施例2:本专利技术提出的数据表索引创建方法由如下步骤组成:1、确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的。2、确定该索引列的高频数据值和非高频数据值,其确定方法由不同数据值在该索引列中的所有数据值中的占比决定,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值。所述阈值的大小根据不同数据库各自的索引有效性确定。3、在该索引列的索引文件的开头划分一块空间用于存放所有的高频数据值,所述一块空间为该列索引的高频数据值表。4、遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其及其占比保存在高频列值数据表中并为其创建索引,本文档来自技高网...

【技术保护点】
1.一种数据表索引创建方法,其特征在于,包括以下步骤:确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的;确定该索引列的高频数据值和非高频数据值;在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引;遍历完毕后,索引创建完毕。

【技术特征摘要】
1.一种数据表索引创建方法,其特征在于,包括以下步骤:确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的;确定该索引列的高频数据值和非高频数据值;在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引;遍历完毕后,索引创建完毕。2.根据权利要求1所述的数据表索引创建方法,其特征在于,当所述数据表中的变化量达到设定的比例时重新进行数据表索引的创建。3.根据权利要求1所述的数据表索引创建方法,其特征在于,所述存放空间保存的为该列索引的高频数据值块,不为该列索引的高频数据值创建索引;所有非高频数据值的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。4.根据权利要求1所述的数据表索引创建方法,其特征在于,所述存放空间保存的为该列索引的高频数据值表,所述高频数据值表包括高频数据值及其占比;在将当前的高频数据值保存在存放空间的同时,将其占比也保存在存放空间,并为其创建索引;所述高频数据值表中高频数据值的保存按照高频数据值在该索引列中的所有数据值中的占比由大到小保存。5.根据权利要求3或4所述的数据表索引创建方法,其特征在于,所述该索引列的高频数据值和非高频数据值的确定方法由不同数据值在该索引列中的所有数据值中的占比决定,具体为,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值;所述阈值的大小根据不同数据库各自的索引有效性...

【专利技术属性】
技术研发人员:袁晓东
申请(专利权)人:南京云白信息科技有限公司
类型:发明
国别省市:江苏,32

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

1