索引表创建方法和装置、目标记录查找方法和装置制造方法及图纸

技术编号:34767168 阅读:12 留言:0更新日期:2022-08-31 19:20
本发明专利技术提供一种索引表创建方法和装置、目标记录查找方法和装置。索引表创建方法包括:基于数据表的目标字段创建排序表,排序表用于对目标字段的键值进行排序,排序表包括条目编号、键值和键值在数据表中的记录编号;基于排序表创建散列表,散列表中与各个键值对应的行均包括第一指针变量和第二指针变量,第一指针变量存储对应的键值在排序表中第一次出现时的条目编号,第二指针变量存储对应的键值在排序表中最后一次出现时的条目编号;采用排序表中的条目编号字段、记录编号字段和散列表,创建数据表的索引表。采用本发明专利技术实施例的方案,即使数据表的目标字段具有大量的重复键值,对其建立的索引表可以在去重后有效处理哈希冲突状况。突状况。突状况。

【技术实现步骤摘要】
索引表创建方法和装置、目标记录查找方法和装置


[0001]本专利技术涉及数据库
,尤其涉及一种索引表创建方法和装置、目标记录查找方法和装置。

技术介绍

[0002]为实现对数据表特定数据的快速查找,相关技术提出为数据表创建哈希索引。但是,在数据表的目标字段具有大量重复键值的情况下,哈希索引存在哈希冲突的问题,使得哈希索引的效率很低。

技术实现思路

[0003]为了解决上述技术问题或者至少部分地解决上述技术问题,本专利技术提供了一种索引表创建方法和装置、目标记录查找方法和装置。
[0004]第一方面,本专利技术提供一种索引表创建方法,所述方法包括:
[0005]基于数据表的目标字段创建排序表,所述排序表用于对所述目标字段的键值进行排序,所述排序表的每一条目均包括条目编号、键值和键值在所述数据表中的记录编号;
[0006]基于所述排序表创建散列表,所述散列表中与各个键值对应的行均包括第一指针变量和第二指针变量,所述第一指针变量存储对应的键值在所述排序表中第一次出现时的条目编号,所述第二指针变量存储所述对应的键值在所述排序表中最后一次出现时的条目编号;
[0007]采用所述排序表中的条目编号字段、记录编号字段和所述散列表,创建所述数据表的索引表。
[0008]可选地,所述基于所述排序表创建散列表,包括:
[0009]步骤A:将所述排序表中的第i条目的键值存储至键值存储器,将所述排序表中第i条目的条目编号存储至第一编号存储器和第二编号存储器,i=0;/>[0010]步骤B:判断所述排序表中第i+1条目的键值与所述键值存储器中的键值是否相同;若是,执行步骤C;若否,执行步骤F;
[0011]步骤C:将第i+1条目的条目编号存储至第二编号存储器,使i=i+1;
[0012]步骤D:判断i是否等于N

1;若是,执行步骤E;若否,执行步骤B;其中N为所述排序表中条目的的数量;
[0013]步骤E:基于散列函数计算所述键值存储器中键值在所述散列表中的对应行,将所述第一编号存储器中条目编号存储在所述对应行的第一指针变量中,将所述第二编号存储器中的条目编号存储在所述对应行的第二指针变量中;
[0014]步骤F:基于散列函数计算所述键值存储器中键值在所述散列表中的对应行,将所述第一编号存储器中条目编号存储在所述对应行的第一指针变量中,将所述第二编号存储器中的条目编号存储在所述对应行的第二指针变量中,使i=i+1,存储第i条目的键值至键值存储器,以及存储所述排序表中第i条目的条目编号至第一编号存储器和第二编号存储
器;随后执行步骤D。
[0015]可选地,在执行步骤A之前,所述方法还包括步骤H:获取所述排序表中的去重后键值的数量,基于去重后键值的数量初始化所述散列表,以及确定所述散列函数。
[0016]可选地,在步骤A包括:设置c=0;
[0017]步骤E包括E1

E4:
[0018]E1:基于散列函数计算键值存储器中键值在散列表中的对应行;
[0019]E2:判断散列表中对应行的第一指针变量和/第二指针变量是否已经存储条目编号;若否,执行步骤E3;若是,执行步骤E4;
[0020]步骤E3:将第一编号存储器中条目编号存储在对应行的第一指针变量中,将第二编号存储器中的条目编号存储在对应行的第二指针变量中;
[0021]步骤E4:将键值对应的散列值存储在临时表格第c行的散列值列中,将第一编号存储器中条目编号存储在临时表格第c行的第一条目编号列中,以及将第二编号存储器中的条目编号存储在临时表格中第c行的第二条目编号列中;
[0022]所述步骤F还包括步骤F1

F5;
[0023]步骤F1:基于散列函数计算键值存储器中键值在散列表中的对应行;
[0024]步骤F2:判断散列表中对应行的第一指针变量和/第二指针变量是否已经存储条目编号;若否,执行步骤F3;若是,执行步骤F4;
[0025]步骤F3:将第一编号存储器中条目编号存储在对应行的第一指针变量中,将第二编号存储器中的条目编号存储在对应行的第二指针变量中,随后执行步骤F5;
[0026]步骤F4:将键值对应的散列值存储在临时表格第c行的散列值列中,将第一编号存储器中条目编号存储在临时表格第c行的第一条目编号列中,以及将第二编号存储器中的条目编号存储在临时表格中第c行的第二条目编号列中,并使c=c+1,随后执行步骤F5;
[0027]步骤F5:使i=i+1,以及存储第i条目的键值至键值存储器,存储排序表中第i条目的条目编号至第一编号存储器和第二编号存储器。
[0028]所述方法在执行步骤E后,还包括:
[0029]步骤H:根据临时表格的行数c确定扩充行的行数,并在散列表的末尾添加扩充行;据扩充行的行数c和在临时表格中存储的散列值,计算散列值在扩充行中对应的行,并将此散列值对应行的第一条目编号存储至扩充行中对应行的第一指针变量中,将散列值对应行的第二条目编号存储至扩充行中对应行的第二指针变量中。
[0030]第二方面,本专利技术提供一种目标记录查找方法,基于如前所述方法创建的索引表查找所述数据表的目标记录,所述目标记录查找方法包括:
[0031]基于所述散列函数,确定所述待搜索键值在所述散列表中对应的目标行;
[0032]基于所述目标行中的第一指针变量和第二指针变量确定所述排序表中的目标条目;
[0033]基于所述目标条目中的条目记录编号确定所述数据表中目标字段的键值为所述待搜索键值的所述目标记录。
[0034]第三方面,本专利技术提供一种索引表创建装置,所述装置包括:
[0035]排序表创建单元,用于基于数据表的目标字段创建排序表,所述排序表用于对所述目标字段的键值进行排序,所述排序表的每一条目均包括条目编号、键值和键值在所述
数据表中的记录编号;
[0036]散列表创建单元,用于基于所述排序表创建散列表,所述散列表中与各个键值对应的行均包括第一指针变量和第二指针变量,所述第一指针变量存储对应的键值在所述排序表中第一次出现时的条目编号,所述第二指针变量存储对应的键值在所述排序表中最后一次出现时的条目编号;
[0037]索引表创建单元,用于采用所述排序表中的条目编号字段、记录编号字段和所述散列表,创建所述数据表的索引表。
[0038]可选地,所述散列表创建单元包括:
[0039]第一存储单元,用于将所述排序表中的第i条目的键值存储至键值存储器,将所述排序表中第i条目的条目编号存储至第一编号存储器和第二编号存储器,i=0;
[0040]第一判断单元,用于判断所述排序表中第i+1条目的键值与所述键值存储器中的键值是否相同;
[0041]第二存储单元,用于在第一判断单元判定所述排序表中第i+1条目的键值与所述键值存储器中的键值相同的情况下,将第i+1条目的条目编号本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种索引表创建方法,其特征在于,所述方法包括:基于数据表的目标字段创建排序表,所述排序表用于对所述目标字段的键值进行排序,所述排序表的每一条目均包括条目编号、键值和键值在所述数据表中的记录编号;基于所述排序表创建散列表,所述散列表中与各个键值对应的行均包括第一指针变量和第二指针变量,所述第一指针变量存储对应的键值在所述排序表中第一次出现时的条目编号,所述第二指针变量存储所述对应的键值在所述排序表中最后一次出现时的条目编号;采用所述排序表中的条目编号字段、记录编号字段和所述散列表,创建所述数据表的索引表。2.根据权利要求1所述的方法,其特征在于,所述基于所述排序表创建散列表,包括:步骤A:将所述排序表中的第i条目的键值存储至键值存储器,将所述排序表中第i条目的条目编号存储至第一编号存储器和第二编号存储器,i=0;步骤B:判断所述排序表中第i+1条目的键值与所述键值存储器中的键值是否相同;若是,执行步骤C;若否,执行步骤F;步骤C:将第i+1条目的条目编号存储至第二编号存储器,使i=i+1;步骤D:判断i是否等于N

1;若是,执行步骤E;若否,执行步骤B;其中N为所述排序表中条目的数量;步骤E:基于散列函数计算所述键值存储器中键值在所述散列表中的对应行,将所述第一编号存储器中条目编号存储在所述对应行的第一指针变量中,将所述第二编号存储器中的条目编号存储在所述对应行的第二指针变量中;步骤F:基于散列函数计算所述键值存储器中键值在所述散列表中的对应行,将所述第一编号存储器中条目编号存储在所述对应行的第一指针变量中,将所述第二编号存储器中的条目编号存储在所述对应行的第二指针变量中,使i=i+1,存储第i条目的键值至键值存储器,以及存储所述排序表中第i条目的条目编号至第一编号存储器和第二编号存储器;随后执行步骤D。3.根据权利要求2所述的方法,其特征在于:在执行步骤A之前,所述方法还包括步骤G:获取所述排序表中的去重后键值的数量,基于去重后键值的数量初始化所述散列表,以及确定所述散列函数。4.根据权利要求2所述的方法,其特征在于,在步骤A包括:设置c=0;步骤E包括E1

E4:E1:基于散列函数计算键值存储器中键值在散列表中的对应行;E2:判断散列表中对应行的第一指针变量和/第二指针变量是否已经存储条目编号;若否,执行步骤E3;若是,执行步骤E4;步骤E3:将第一编号存储器中条目编号存储在对应行的第一指针变量中,将第二编号存储器中的条目编号存储在对应行的第二指针变量中;步骤E4:将键值对应的散列值存储在临时表格第c行的散列值列中,将第一编号存储器中条目编号存储在临时表格第c行的第一条目编号列中,以及将第二编号存储器中的条目编号存储在临时表格中第c行的第二条目编号列中;所述步骤F还包括步骤F1

F5;
步骤F1:基于散列函数计算键值存储器中键值在散列表中的对应行;步骤F2:判断散列表中对应行的第一指针变量和/第二指针变量是否已经存储条目编号;若否,执行步骤F3;若是,执行步骤F4;步骤F3:将第一编号存储器中条目编号存储在对应行的第一指针变量中,将第二编号存储器中的条目编号存储在对应行的第二指针变量中,随后执行步骤F5;步骤F4:将键值对应的散列值存储在临时表格第c行的散列值列中,将第一编号存储器中条目编号存储在临时表格第c行的第一条目编号列中,以及将第二编号存储器中的条目编号存储在临时表格中第c行的第二条目编号列中,并使c=c+1,随后执行步骤F5;步骤F5:使i=i+1,以及存储第i条目的键值至键值存储器,存储排序表中第i条目的条目编号至第一编号存储器和第二编号存储器;所述方法在执行步骤E后,还包括:步骤H:根据临时表格的行数c确定扩充行的行数,并在散列表的末尾添加扩充行;据扩充行的行数c和在临时表格中存储的散列值,计算散列值在扩充行中对应的行,并将此散列值对应行的第一条目编号存储至扩充行...

【专利技术属性】
技术研发人员:谢志峰裴益川苗永春蔡卓然单洪泷
申请(专利权)人:上海大象张量纳米科技有限公司
类型:发明
国别省市:

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

1