CN110399375B - 一种数据表索引创建方法及装置 - Google Patents
一种数据表索引创建方法及装置 Download PDFInfo
- Publication number
- CN110399375B CN110399375B CN201910669750.0A CN201910669750A CN110399375B CN 110399375 B CN110399375 B CN 110399375B CN 201910669750 A CN201910669750 A CN 201910669750A CN 110399375 B CN110399375 B CN 110399375B
- Authority
- CN
- China
- Prior art keywords
- index
- data value
- frequency data
- column
- value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000005516 engineering process Methods 0.000 abstract description 7
- 230000009286 beneficial effect Effects 0.000 description 1
Images
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
-
- 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/2282—Tablespace storage structures; Management thereof
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)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种数据表索引创建方法,包括以下步骤:确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;确定该索引列的高频数据值和非高频数据值;在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中;如果为非高频数据值,则在为该非高频数据值创建索引;遍历完毕后,索引创建完毕。本发明能够解决现有的索引技术针对数据不均衡分布时的两难局面,显著提高查询效率。
Description
技术领域
本发明涉及数据库技术,具体涉及一种数据表索引创建方法及装置。
背景技术
现有的数据库索引技术是对整张数据表根据某个列或者列组合进行索引,在数据分布比较均匀的情况下非常有效,但当数据不均衡分布时,比如某几个数据值占比非常高,其他大多数数据值占比很低时,则产生两难局面:如果查询时使用索引,对于查询占比低的数据值查询效率提升明显,而如果查询占比高的数据值时则效率反而会明显下降;而如果查询时不使用索引,那么创建索引非但没有用处,反而会占用空间,影响增删改操作的效率。
发明内容
为了解决上述问题,本发明提出了一种数据表索引创建方法,包括以下步骤:
确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的;
确定该索引列的高频数据值和非高频数据值;
在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;
遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引;
遍历完毕后,索引创建完毕。
进一步地,当所述数据表中的变化量达到设定的比例时重新进行数据表索引的创建。
进一步地,所述存放空间保存的为该列索引的高频数据值块,不为该列索引的高频数据值创建索引;所有非高频数据值的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。
进一步地,所述存放空间保存的为该列索引的高频数据值表,所述高频数据值表包括高频数据值及其占比;在将当前的高频数据值保存在存放空间的同时,将其占比也保存在存放空间,并为其创建索引;所述高频数据值表中高频数据值的保存按照高频数据值在该索引列中的所有数据值中的占比由大到小保存。
进一步地,所述该索引列的高频数据值和非高频数据值的确定方法由不同数据值在该索引列中的所有数据值中的占比决定,具体为,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值;所述阈值的大小根据不同数据库各自的索引有效性确定。
进一步地,所述阈值为0.01。
一种数据表索引的创建装置,包括:
统计模块,用于确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的;
高频数据值的存放空间创建模块,用于确定该索引列的高频数据值和非高频数据值;在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;
索引创建模块,用于遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引。
进一步地,所述存放空间保存的为该列索引的高频数据值块,不为该列索引的高频数据值创建索引;所有非高频数据值的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。
进一步地,所述存放空间保存的为该列索引的高频数据值表,所述高频数据值表包括高频数据值及其占比;在将当前的高频数据值保存在存放空间的同时,将其占比也保存在存放空间,并未其创建索引;所述高频数据值表中高频数据值的存放按照高频数据值在该索引列中的所有数据值中的占比的大小保存。
进一步地,所述该索引列的高频数据值和非高频数据值的确定方法由不同数据值在该索引列中的所有数据值中的占比决定,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值;所述阈值的大小根据不同数据库各自的索引有效性确定。
与现有技术相比,本发明具有以下有益效果:
本发明采用与现有数据库索引不同的方法,对于数据分布不均衡的表,并不是简单地全表创建索引,而是设定一个合理的阈值,对于在索引列中占比超过该阈值的值不创建索引,其他值创建索引,并将不创建索引的高频列值单独存放在一个数据块中,方便查询语句执行时进行比对,由此解决现有的索引技术针对数据不均衡分布时的两难局面,显著提高查询效率。
附图说明
图1为本发明实施例1方法的流程图。
具体实施方式
实施例1:
本发明提出的数据表索引创建方法由如下步骤组成:
1、确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的。
2、确定该索引列的高频数据值和非高频数据值,其确定方法由不同数据值在该索引列中的所有数据值中的占比决定,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值。由于各类数据库自身实现技术的差异,索引对多高选择度的数据能够起到提升查询效率的作用是不一样的,因此,所述阈值的大小根据不同数据库各自的索引有效性确定。本实施例中阈值的经验值为0.01。
3、在该索引列的索引文件的开头划分一块空间用于存放所有的高频数据值,所述一块空间为该列索引的高频数据值块。假设所设阈值为x,则不同的高频数据值的种数不会超过1/x种,因此高频数据值块的大小只需要很小的空间,且可以在内存中进行缓存,查询某一数据值是否为高频数据值的查询效率也非常高,在整个查询语句的执行开销中,这部分开销可以忽略不计。
4、遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在高频列值数据块中且不为该高频数据值创建索引,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引。
5、遍历完毕后,索引创建完毕,所有非高频数据值的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。
6、当数据表变化量达到设定的比例时(如2%)或者数据块管理员执行重建索引命令时,重新按照步骤1-5重建索引。
实施例2:
本发明提出的数据表索引创建方法由如下步骤组成:
1、确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的。
2、确定该索引列的高频数据值和非高频数据值,其确定方法由不同数据值在该索引列中的所有数据值中的占比决定,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值。所述阈值的大小根据不同数据库各自的索引有效性确定。
3、在该索引列的索引文件的开头划分一块空间用于存放所有的高频数据值,所述一块空间为该列索引的高频数据值表。
4、遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其及其占比保存在高频列值数据表中并为其创建索引,所述存放顺序按照高频数据值在该索引列中的所有数据值中的占比由大至小存放;若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引。
5、遍历完毕后,索引创建完毕。
6、当数据表变化量达到设定的比例时(如2%)或者数据块管理员执行重建索引命令时,重新按照步骤1-5重建索引。
实施例2和实施例1的区别在于实施例2仍然为高频数据值创建索引,加大了索引文件的大小,浪费存储空间。但实施例2的好处在于,增加了查询语句执行的灵活性,因为在索引文件的高频数据值表中可以查到每个列值的占比多少,并且所有高频数据值都创建了索引,所以查询语句执行时可以根据所查询高频数据值的占比多少灵活决定是否使用索引。
实施例3
一种数据表索引的创建装置,包括:
统计模块,用于确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的。
高频数据值块创建模块,用于确定该索引列的高频数据值和非高频数据值,其确定方法由不同数据值在该索引列中的所有数据值中的占比决定,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值。由于各类数据库自身实现技术的差异,索引对多高选择度的数据能够起到提升查询效率的作用是不一样的,因此,所述阈值的大小根据不同数据库各自的索引有效性确定。在该索引列的索引文件的开头划分一块空间用于存放所有的高频数据值,所述一块空间为该列索引的高频数据值块。
索引创建模块,遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引。
所述存放空间存放的可以为该列索引的高频数据值块;所有的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。
所述存放空间存放的也可以为该列索引的高频数据值表;所述高频数据值表中高频数据值的存放按照高频数据值在该索引列中的所有数据值中的占比的大小存放;所述高频数据值表包括高频数据值及其占比。
本发明采用与现有数据库索引不同的方法,对于数据分布不均衡的表,并不是简单地全表创建索引,而是设定一个合理的阈值,对于在索引列中占比超过该阈值的值不创建索引,其他值创建索引,并将不创建索引的高频列值单独存放在一个数据块中,方便查询语句执行时进行比对,由此解决现有的索引技术针对数据不均衡分布时的两难局面,显著提高查询效率。
Claims (10)
1.一种数据表索引创建方法,其特征在于,包括以下步骤:
确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的;
确定该索引列的高频数据值和非高频数据值;
在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;
遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引;
遍历完毕后,索引创建完毕。
2.根据权利要求1所述的数据表索引创建方法,其特征在于,当所述数据表中的变化量达到设定的比例时重新进行数据表索引的创建。
3.根据权利要求1所述的数据表索引创建方法,其特征在于,
所述存放空间保存的为该列索引的高频数据值块,不为该列索引的高频数据值创建索引;所有非高频数据值的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。
4.根据权利要求1所述的数据表索引创建方法,其特征在于,
所述存放空间保存的为该列索引的高频数据值表,所述高频数据值表包括高频数据值及其占比;在将当前的高频数据值保存在存放空间的同时,将其占比也保存在存放空间,并为其创建索引;所述高频数据值表中高频数据值的保存按照高频数据值在该索引列中的所有数据值中的占比由大到小保存。
5.根据权利要求3或4所述的数据表索引创建方法,其特征在于,所述该索引列的高频数据值和非高频数据值的确定方法由不同数据值在该索引列中的所有数据值中的占比决定,具体为,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值;所述阈值的大小根据不同数据库各自的索引有效性确定。
6.根据权利要求5所述的数据表索引创建方法,其特征在于,所述阈值为0.01。
7.一种数据表索引的创建装置,其特征在于,包括:
统计模块,用于确定数据表中的索引列,统计该索引列中的不同数据值在该索引列中的所有数据值中的占比;所述索引列为数据表中的一列或者至少两列以上的列的组合;所述不同数据值表示所述索引列中有至少一列的数据值是不相同的;
高频数据值的存放空间创建模块,用于确定该索引列的高频数据值和非高频数据值;在该索引列的索引文件的开头开辟用于保存所有的高频数据值的存放空间;
索引创建模块,用于遍历数据表中的所有记录,判断当前记录在该索引列下的数据值是否为高频数据值,如果当前记录在该索引列下的数据值为高频数据值,则将其保存在存放空间中,若已保存则不再重复保存;如果当前记录在该索引列下的数据值为非高频数据值,则在该索引列的索引文件中为该非高频数据值创建索引。
8.根据权利要求7所述的数据表索引的创建装置,其特征在于,
所述存放空间保存的为该列索引的高频数据值块,不为该列索引的高频数据值创建索引;所有非高频数据值的索引构成索引部分,索引部分和高频数据值块组成数据表的索引列的索引文件。
9.根据权利要求7所述的数据表索引的创建装置,其特征在于,
所述存放空间保存的为该列索引的高频数据值表,所述高频数据值表包括高频数据值及其占比;在将当前的高频数据值保存在存放空间的同时,将其占比也保存在存放空间,并未其创建索引;所述高频数据值表中高频数据值的存放按照高频数据值在该索引列中的所有数据值中的占比的大小保存。
10.根据权利要求8或9所述的数据表索引的创建装置,其特征在于,所述该索引列的高频数据值和非高频数据值的确定方法由不同数据值在该索引列中的所有数据值中的占比决定,当某一数据值的占比大于等于阈值时,该数据值为高频数据值;否则该数据值为非高频数据值;所述阈值的大小根据不同数据库各自的索引有效性确定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910669750.0A CN110399375B (zh) | 2019-07-24 | 2019-07-24 | 一种数据表索引创建方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910669750.0A CN110399375B (zh) | 2019-07-24 | 2019-07-24 | 一种数据表索引创建方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399375A CN110399375A (zh) | 2019-11-01 |
CN110399375B true CN110399375B (zh) | 2020-06-26 |
Family
ID=68325847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910669750.0A Active CN110399375B (zh) | 2019-07-24 | 2019-07-24 | 一种数据表索引创建方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399375B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035557B (zh) * | 2020-09-02 | 2024-04-16 | 中国银行股份有限公司 | 交易日志报表展示方法及装置 |
WO2024055695A1 (zh) * | 2022-09-15 | 2024-03-21 | 华为云计算技术有限公司 | 创建索引的方法及数据库系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102918529A (zh) * | 2010-04-26 | 2013-02-06 | 诺基亚公司 | 索引生成和使用的方法和装置 |
CN106202403A (zh) * | 2016-07-11 | 2016-12-07 | 浪潮通用软件有限公司 | 一种通过动态分析创建数据库索引的方法 |
WO2018165044A1 (en) * | 2017-03-08 | 2018-09-13 | Mcafee, Llc | Aggregate, index-based, real-time verification of node contents |
CN109271455A (zh) * | 2018-11-12 | 2019-01-25 | 武汉达梦数据库有限公司 | 一种数据同步时数据表索引的创建方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722553B (zh) * | 2012-05-24 | 2014-04-02 | 浙江大学 | 基于用户日志分析的分布式倒排索引组织方法 |
CN107562762B (zh) * | 2016-07-01 | 2020-10-27 | 中国联合网络通信集团有限公司 | 数据索引构建方法及装置 |
-
2019
- 2019-07-24 CN CN201910669750.0A patent/CN110399375B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102918529A (zh) * | 2010-04-26 | 2013-02-06 | 诺基亚公司 | 索引生成和使用的方法和装置 |
CN106202403A (zh) * | 2016-07-11 | 2016-12-07 | 浪潮通用软件有限公司 | 一种通过动态分析创建数据库索引的方法 |
WO2018165044A1 (en) * | 2017-03-08 | 2018-09-13 | Mcafee, Llc | Aggregate, index-based, real-time verification of node contents |
CN109271455A (zh) * | 2018-11-12 | 2019-01-25 | 武汉达梦数据库有限公司 | 一种数据同步时数据表索引的创建方法 |
Non-Patent Citations (2)
Title |
---|
"关系数据库的查询优化技术";樊新华;《计算机与数字工程》;20091231;第37卷(第12期);第188-192页 * |
"面向海量异构历史数据查询的索引管理系统";徐冰;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140315(第3期);正文第5、15页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110399375A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105117417B (zh) | 一种读优化的内存数据库Trie树索引方法 | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
US9529912B2 (en) | Metadata querying method and apparatus | |
CN108197296B (zh) | 基于Elasticsearch索引的数据存储方法 | |
CN110399375B (zh) | 一种数据表索引创建方法及装置 | |
CN104361113B (zh) | 一种内存‑闪存混合存储模式下的olap查询优化方法 | |
US20120117064A1 (en) | Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data | |
US20120323867A1 (en) | Systems and methods for querying column oriented databases | |
US8583655B2 (en) | Using an inverted index to produce an answer to a query | |
US10452676B2 (en) | Managing database with counting bloom filters | |
CN103902544A (zh) | 一种数据处理方法及系统 | |
CN104636349A (zh) | 一种索引数据压缩以及索引数据搜索的方法和设备 | |
CN112527836B (zh) | 一种基于t-box平台的大数据查询方法 | |
CN106776702B (zh) | 一种处理主从式数据库系统中的索引的方法和装置 | |
CN109213751B (zh) | 一种基于Spark平台的Oracle数据库并行迁移方法 | |
CN110019192B (zh) | 数据库的检索方法及装置 | |
CN104376055B (zh) | 一种基于分片技术的大模型数据比较方法 | |
CN105589969A (zh) | 一种数据处理方法及装置 | |
CN111221864B (zh) | 一种基于mysql慢查询日志词频分析的索引智能推荐方法 | |
CN110019971B (zh) | 一种索引创建方法、装置及数据库系统 | |
CN113568916A (zh) | 数据表切分方法、装置、电子设备及存储介质 | |
CN110019448B (zh) | 一种数据交互方法及装置 | |
CN112463837A (zh) | 一种关系型数据库数据存储查询方法 | |
CN113032400B (zh) | 海量数据的高性能TopN查询方法、系统及介质 | |
CN111737257A (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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A method and device for creating data table indexes Effective date of registration: 20231222 Granted publication date: 20200626 Pledgee: China Construction Bank Corporation Nanjing Gulou sub branch Pledgor: Nanjing cloud white Mdt InfoTech Ltd. Registration number: Y2023980073585 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |