CN107016019B - 数据库索引创建方法及装置 - Google Patents
数据库索引创建方法及装置 Download PDFInfo
- Publication number
- CN107016019B CN107016019B CN201610920814.6A CN201610920814A CN107016019B CN 107016019 B CN107016019 B CN 107016019B CN 201610920814 A CN201610920814 A CN 201610920814A CN 107016019 B CN107016019 B CN 107016019B
- Authority
- CN
- China
- Prior art keywords
- field
- query condition
- database
- weight
- sql statement
- 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
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
Abstract
本申请公开了一种数据库索引创建方法及装置,其中该方法包括按如下方式对数据库的每一结构化查询语言SQL语句创建数据库索引:确定一SQL语句中每一查询条件字段的字段信息;根据所述每一查询条件字段的字段信息,计算所述每一查询条件字段的权重;根据所述每一查询条件字段的权重,为该SQL语句创建数据库索引。本申请可以在自动进行数据库索引创建过程中避免业务场景及数据库中无有效数据分布对数据库索引创建的影响。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及数据库索引创建方法及装置。
背景技术
数据库(Database)按照数据结构来组织、存储和管理数据。数据库索引对数据库表中一列或多列的值进行排序并建立目录,使用数据库索引可以快速访问数据库表中的特定信息。
数据库索引的创建和维护是DBA(Database Administrator,数据库管理员)日常业务中不可取代的工作。DBA的主要日常工作之一是SQL(Structured Query Language,结构化查询语言)调优,SQL调优的重要手段之一是给查询慢的SQL建立合适的数据库索引。数据库索引的建立需要对业务场景有一定了解,并需要一定的数据库经验,对业务场景的了解程度和数据库经验的丰富程度对线上应用的性能影响非常巨大。随着业务场景规模的不断扩大,DBA不可能了解所有业务,这样数据库索引的建立就会脱离实际业务需求,造成数据库索引创建的效率不高,随时会影响线上业务应用的正常运转。同时,数据库索引的建立和维护工作也占用了DBA大量时间。
现有技术中提出一种基于有效数据分布的数据库索引自动创建的方案,然而在该方案中数据库索引的建立需要基于数据库中的有效数据分布,并且要求尽量真实模拟线上数据分布,那么在新数据库或者新业务上线的时候,由于没有任务业务数据写入,缺少数据库的有效数据分布,这种基于有效数据分布的数据库索引建立方案就有些缺陷了,二者的矛盾是数据库索引需要业务上线前建立好,而数据库索引的建立又依赖业务中的有效数据分布。
发明内容
本申请实施例提供一种数据库索引创建方法,在自动进行数据库索引创建过程中避免业务场景及数据库中无有效数据分布对数据库索引创建的影响,该方法包括按如下方式对数据库的每一结构化查询语言SQL语句创建数据库索引:
确定一SQL语句中每一查询条件字段的字段信息;
根据所述每一查询条件字段的字段信息,计算所述每一查询条件字段的权重;
根据所述每一查询条件字段的权重,对该SQL语句中查询条件字段进行排序;
根据排序后的查询条件字段为该SQL语句创建数据库索引。
本申请实施例还提供一种数据库索引创建装置,用以在自动进行数据库索引创建过程中避免业务场景及数据库中无有效数据分布对数据库索引创建的影响,该装置包括:
字段信息确定模块,用于在对数据库的每一SQL语句创建数据库索引时,确定一SQL语句中每一查询条件字段的字段信息;
权重计算模块,用于根据所述每一查询条件字段的字段信息,计算所述每一查询条件字段的权重;
字段排序模块,用于根据所述每一查询条件字段的权重,对该SQL语句中查询条件字段进行排序;
索引创建模块,用于根据排序后的查询条件字段为该SQL语句创建数据库索引。
本申请实施例提供一种数据库索引创建方法,在自动进行数据库索引创建过程中避免业务场景及数据库中无有效数据分布对数据库索引创建的影响,该方法包括按如下方式对数据库的每一结构化查询语言SQL语句创建数据库索引:
确定一SQL语句中每一查询条件字段的字段信息;
根据所述每一查询条件字段的字段信息,计算所述每一查询条件字段的权重;
根据所述每一查询条件字段的权重,为该SQL语句创建数据库索引。
本申请实施例还提供一种数据库索引创建装置,用以在自动进行数据库索引创建过程中避免业务场景及数据库中无有效数据分布对数据库索引创建的影响,该装置包括:
字段信息确定模块,用于在对数据库的每一SQL语句创建数据库索引时,确定一SQL语句中每一查询条件字段的字段信息;
权重计算模块,用于根据所述每一查询条件字段的字段信息,计算所述每一查询条件字段的权重;
索引创建模块,用于根据所述每一查询条件字段的权重,为该SQL语句创建数据库索引。
一个实施例中,所述字段信息确定模块包括:
解析单元,用于对该SQL语句进行解析,获得该SQL语句对应的数据库表信息、该SQL语句中查询条件字段、以及该SQL语句的数据库连接;
查询单元,用于根据所述数据库连接链接到对应的数据库,在所述数据库中根据所述数据库表信息查找该SQL语句对应的数据库表,在所述数据库表中查找该SQL语句中查询条件字段的字段信息。
一个实施例中,所述查询单元还用于:在查找到所述数据库表之后,获取所述数据库表的已有索引信息;
所述装置进一步包括:
数据判定模块,用于在该SQL语句中查询条件字段未能匹配已有索引信息时,确定所述数据库表中是否有有效数据;
数据处理模块,用于在所述数据库表中有有效数据时,基于所述数据库表中的有效数据分布为该SQL语句创建数据库索引;
创建触发模块,用于在所述数据库表中没有有效数据时,触发所述权重计算模块及索引创建模块执行相应功能。
一个实施例中,所述查询单元还用于:在查找到所述数据库表之后,获取所述数据库表的大小;
所述数据判定模块具体用于在该SQL语句中查询条件字段未能匹配已有索引信息,且所述数据库表的大小符合预设条件时,确定所述数据库表中是否有有效数据。
一个实施例中,所述字段信息确定模块具体用于确定所述每一查询条件字段的字段类型、字段长度和字段名称;
所述权重计算模块具体用于:根据所述每一查询条件字段的字段类型、字段长度和字段名称,计算所述每一查询条件字段的权重。
一个实施例中,所述权重计算模块具体用于按如下公式计算查询条件字段的权重:
weight=(columnTypeweight+columnLengthWeight)×columnNameWeight;
其中,weight为查询条件字段的权重,columnTypeweight为查询条件字段的字段类型的权重,columnLengthWeight为查询条件字段的字段长度的权重,columnNameWeight为查询条件字段的字段名称的权重。
一个实施例中,所述索引创建模块具体用于:
根据所述每一查询条件字段的权重,对该SQL语句中查询条件字段进行排序;
根据排序后的查询条件字段为该SQL语句创建数据库索引。
本申请实施例中,在对数据库的每一SQL语句创建数据库索引时,确定一SQL语句中每一查询条件字段的字段信息;根据所述每一查询条件字段的字段信息,计算所述每一查询条件字段的权重;根据所述每一查询条件字段的权重,为该SQL语句创建数据库索引;从而实现数据库索引的自动创建,创建过程中不需要考虑业务场景,不依赖DBA的数据库经验,也不需要基于数据库中有效数据分布,避免了业务场景及数据库中无有效数据分布对数据库索引创建的影响,提高了数据库索引创建的效率,尤其适用于新业务的上线运行。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本申请实施例中数据库索引创建方法的原理示意图;
图2为本申请实施例中数据库索引创建方法的处理流程图;
图3为本申请实施例中数据库索引自动创建的一具体实例的示意图;
图4为本申请实施例中另一数据库索引创建方法的原理示意图;
图5为本申请实施例中数据库索引创建装置的示意图;
图6为本申请实施例中图5所示数据库索引创建装置的一具体实例的示意图;
图7为本申请实施例中图5所示数据库索引创建装置的另一具体实例的示意图;
图8为本申请实施例中另一数据库索引创建装置的示意图;
图9为本申请实施例中图8所示数据库索引创建装置的一具体实例的示意图;
图10为本申请实施例中图8所示数据库索引创建装置的另一具体实例的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本申请实施例做进一步详细说明。在此,本申请的示意性实施例及其说明用于解释本申请,但并不作为对本申请的限定。
发明人经研究发现,SQL语句数据库索引的自动创建是大规模数据库及应用运维发展的必然趋势,并且,无有效数据的数据库索引创建是自动SQL语句优化技术的一个空白点,现有的Oracle和SqlServer的优化工具都是基于线上真实数据运行环境进行SQL分析的,但是线上进行调试又势必会对应用造成影响,所以索引优化工作放在事前是一种更合适更低代价的方案。
因此,本申请实施例中提出一种数据库索引创建方法,该方法基于字段规则实现数据库索引的自动创建,实现在无有效数据情况下的SQL自动优化,其中无有效数据例如可以包括数据库中的数据分布不符合线上实际运行场景的情况,比如数据库中虽然有数据,但是这些数据都是测试数据,对创建数据库索引没有参考价值。该方法基于字段规则建立数据库索引不需要考虑业务场景,是一种普适的方案。该方法不但在一定程度上解放了DBA的日常工作,而且也有效的防止了新业务不经过优化直接上线带来的性能问题。
图1为本申请实施例中数据库索引创建方法的原理图。如图1所示,在本申请实施例中,对于数据库的每一SQL语句,首先确定出该SQL语句中的每一查询条件字段,图1中以该SQL语句包括查询条件字段1~5为例进行说明;对于查询条件字段1~5,分别确定出查询条件字段1的字段信息1,查询条件字段2的字段信息2,查询条件字段3的字段信息3,查询条件字段4的字段信息4,查询条件字段5的字段信息5;然后对每一查询条件字段,根据字段信息计算权重,得到查询条件字段1的权重1,查询条件字段2的权重2,查询条件字段3的权重3,查询条件字段4的权重4,查询条件字段5的权重5;最后根据每一查询条件字段的权重,即权重1~5为该SQL语句创建数据库索引。
图2为本申请实施例中数据库索引创建方法的处理流程图。如图1所示,本申请实施例中数据库索引创建方法可以包括对数据库的每一SQL语句按如下方式创建数据库索引:
步骤201、确定一SQL语句中每一查询条件字段的字段信息;
步骤202、根据每一查询条件字段的字段信息,计算每一查询条件字段的权重;
步骤203、根据每一查询条件字段的权重,对该SQL语句中查询条件字段进行排序;
步骤204、根据排序后的查询条件字段为该SQL语句创建数据库索引。
具体实施时,每一SQL语句中都可能包含多个查询条件字段,需要确定SQL语句中每一查询条件字段的字段信息。实施例中,可以通过对SQL语句进行预处理,来获得其中每一查询条件字段的字段信息。例如,预处理的过程可以包括:对SQL语句进行解析,获得该SQL语句对应的数据库表信息、该SQL语句中查询条件字段、以及该SQL语句的数据库连接;根据该数据库连接链接到对应的数据库,在该数据库中根据该数据库表信息查找该SQL语句对应的数据库表,在该数据库表中查找该SQL语句中查询条件字段的字段信息。其中的数据库表信息可以是数据库表名等数据库表的标识信息。查询条件字段的字段信息可以包括查询条件字段的字段类型、字段长度和字段名称,还可以根据实际需求扩展其它字段信息。
在获得了SQL语句中每一查询条件字段的字段信息后,可以根据每一查询条件字段的字段信息计算每一查询条件字段的权重,进而根据每一查询条件字段的权重对该SQL语句中查询条件字段进行重新排序,以便于根据排序后的查询条件字段为该SQL语句创建数据库索引。显然,为SQL语句创建数据库索引的过程中是依据查询条件字段的字段信息来进行,由此基于字段规则实现了数据库索引的自动创建,巧妙地采用了字段规则的特点作为字段区分度的判别依据。创建过程中并未利用业务场景,也未利用数据库中有效数据分布,提高了数据库索引创建的效率,也适于新业务的上线运行。
实施例中也可以将本申请实施例基于字段规则的数据库索引自动创建与基于有效数据分布的数据库索引自动创建相结合,进一步提高数据库索引创建的效率。例如可以配合基于有效数据分布进行索引自动创建及整套IDB的SQLreivew工具提供一个完整的SQL语句数据库索引自动创建方案。具体的,可以在前述根据SQL语句对应的数据库表信息查找到该SQL语句对应的数据库表之后,还获取该数据库表中已有索引信息;并进一步判断该SQL语句中查询条件字段是否能匹配已有索引信息,若能匹配已有索引信息,则以相匹配的已有索引信息为该SQL语句创建数据库索引,若不能匹配已有索引信息,则可以基于字段规则进行数据库索引自动创建;当然,一种可能的情况是,如果该数据库表中有有效数据,此时可以基于该数据库表中的有效数据分布为该SQL语句建立数据库索引;如果该数据库表中没有有效数据,则仍旧按图2所示流程基于字段规则进行数据库索引自动创建。基于字段规则进行数据库索引自动创建可以是针对事前SQL优化提供的一套新业务无有效数据情况的解决方案,如果数据库中有一定业务数据,可以基于有效数据分布计算出对应的字段权重,以此建立数据库索引。
实施例中还可以在查找到SQL语句对应的数据库表之后,还获取该数据库表的大小;当该SQL语句中查询条件字段未能匹配已有索引信息时,再判断该数据库表的大小是否符合预设条件。该预设条件可以是触发基于字段规则进行数据库索引自动创建的条件,可以根据实际情况设置具体的条件参数。当该数据库表的大小符合预设条件,再进一步确定该数据库表中是否有有效数据,从而基于有效数据分布或字段规则进行数据库索引自动创建。
具体实施时,当查询条件字段的字段信息包括查询条件字段的字段类型、字段长度和字段名称时,根据查询条件字段的字段信息计算查询条件字段的权重可以包括:根据查询条件字段的字段类型、字段长度和字段名称,计算查询条件字段的权重。实施例中,可以分别找到查询条件字段的字段类型的权重、查询条件字段的字段长度的权重、以及查询条件字段的字段名称的权重;再根据查询条件字段的字段类型的权重、查询条件字段的字段长度的权重、以及查询条件字段的字段名称的权重,计算查询条件字段的权重。例如,可以按如下公式计算查询条件字段的权重:
weight=(columnTypeweight+columnLengthWeight)×columnNameWeight;
其中,weight为查询条件字段的权重,columnTypeweight为查询条件字段的字段类型的权重,columnLengthWeight为查询条件字段的字段长度的权重,columnNameWeight为查询条件字段的字段名称的权重。上述公式仅为一例,实施时可根据实际需求设置其它具体的权重计算公式。
表一给出了查询条件字段的字段类型的权重columnTypeweight具体取值示例:
表一
字段类型columType | 权重columnTypeweight |
Number类型 | 110 |
Int类型 | 90 |
Varchar类型 | 90 |
DateTime类型,Date类型 | 50 |
Double类型,Float类型,Decimal类型 | 50 |
Enum类型,Set类型,Lob类型 | 10 |
默认 | 50 |
表二给出了查询条件字段的字段长度的权重columnLengthWeight具体取值示例:
表二
字段长度columnLength | 权重columnLengthWeight |
超短类型 | -50 |
短类型 | 20 |
长类型 | 10 |
默认 | 0 |
表三给出了查询条件字段的字段名称的权重columnNameWeight具体取值示例:
表三
字段名称columnName | 权重columnNameWeight |
Id字段 | 1.5 |
Name字段 | 1.2 |
Nick字段 | 1.2 |
Email字段 | 1.1 |
Phone字段 | 1.1 |
Url字段 | 1.0 |
Ip字段 | 1.0 |
Gmt时间字段 | 1.1 |
Status字段 | 0.7 |
默认 | 1.0 |
在按上述实施例计算出SQL语句中每一查询条件字段的权重后,则根据每一查询条件字段的权重,为该SQL语句创建数据库索引。具体的实例中,例如可以先根据每一查询条件字段的权重对该SQL语句中查询条件字段进行排序,再根据排序后的查询条件字段为该SQL语句创建数据库索引,从而完成基于字段规则的数据库索引自动创建。
下面举一具体实例说明本申请实施例中数据库索引创建方法的具体实施。图3为本例中数据库索引自动创建的过程示意图。图3中示出了针对单条SQL语句自动计算查询条件字段权重,并根据查询条件字段权重对查询条件字段重排序,最后依据重排序后的查询条件字段生成一条最优的索引建立脚本。具体的,如图3所示,本例中数据库索引创建的过程可以包括:
步骤301、对SQL语句进行预处理,解析获得该SQL语句对应的数据库表名、该SQL语句中查询条件字段、以及该SQL语句的数据库连接,再根据获得的数据库连接链接到对应的数据库,在该数据库中根据数据库表名查到该SQL语句对应的数据库表,在该数据库表中查到该SQL语句中查询条件字段的字段信息,包括字段类型、字段长度及字段名称。并获取数据库表的大小和已有索引信息。
步骤302、检查该SQL语句中的查询条件字段能否匹配到已有索引信息。若能匹配已有索引信息,则以相匹配的已有索引信息为该SQL语句创建数据库索引,若不能匹配已有索引信息,则执行步骤303;
步骤303、检查该数据库表的大小是否符合触发基于字段规则进行数据库索引自动创建的条件,如果符合,则进一步确认该数据库表中是否有有效数据,如果该数据库表中有有效数据可以基于该数据库表中的有效数据分布为该SQL语句建立数据库索引;如果没有则继续执行步骤304;
步骤304、根据查询条件字段的字段类型、字段长度和字段名称,计算查询条件字段的权重。
分别找到查询条件字段的字段类型的权重columnTypeweight、查询条件字段的字段长度的权重columnLengthWeight、以及查询条件字段的字段名称的权重columnNameWeight。
每个查询条件字段的权重weight最终计算结果为:
weight=(columnTypeweight+columnLengthWeight)×columnNameWeight
其中,columnTypeweight、columnLengthWeight和columnNameWeight的具体取值可以分别如表一、表二和表三所示。
步骤305、根据每一查询条件字段的权重,对该SQL语句中查询条件字段进行排序。
步骤306、根据排序后的查询条件字段为该SQL语句创建数据库索引。具体在创建时,还可以依据数据库表名来进行,即实施时可以依据排序后的查询条件字段和数据库表名来为该SQL语句创建数据库索引。
在另外的实施例中,根据每一查询条件字段的权重为该SQL语句创建数据库索引还可能有其它的实施方式,例如也可以不对该SQL语句中查询条件字段进行排序,而是选取该SQL语句中权重较大的几个查询条件字段,为该SQL语句创建数据库索引。也可以既进行查询条件字段排序又通过阈值选取权重较大的来进行数据库索引的创建。基于此,如图4所示,本申请实施例中还提供一种数据库索引创建方法,该方法可以包括对数据库的每一SQL语句按如下方式创建数据库索引:
步骤401、确定一SQL语句中每一查询条件字段的字段信息;
步骤402、根据每一查询条件字段的字段信息,计算每一查询条件字段的权重;
步骤403、根据每一查询条件字段的权重,为该SQL语句创建数据库索引。
本申请实施例中还提供了一种数据库索引创建装置,如下面的实施例所述。由于该装置解决问题的原理与数据库索引创建方法相似,因此该装置的实施可以参见数据库索引创建方法的实施,重复之处不再赘述。
图5为本申请实施例中数据库索引创建装置的示意图。如图5所示,该数据库索引创建装置可以包括:
字段信息确定模块501,用于在对数据库的每一SQL语句创建数据库索引时,确定一SQL语句中每一查询条件字段的字段信息;字段信息确定模块501是图5所示数据库索引创建装置中负责完成字段信息确定功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
权重计算模块502,用于根据所述每一查询条件字段的字段信息,计算每一查询条件字段的权重;权重计算模块502是图5所示数据库索引创建装置中负责完成字段权重计算功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
字段排序模块503,用于根据每一查询条件字段的权重,对该SQL语句中查询条件字段进行排序;字段排序模块503是图5所示数据库索引创建装置中负责完成字段排序功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
索引创建模块504,用于根据排序后的查询条件字段为该SQL语句创建数据库索引。索引创建模块504是图5所示数据库索引创建装置中负责完成索引创建功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件。
图6为本申请实施例中图5所示数据库索引创建装置的具体实例图。如图6所示,本例中数据库索引创建装置中字段信息确定模块501可以包括:
解析单元601,用于对该SQL语句进行解析,获得该SQL语句对应的数据库表信息、该SQL语句中查询条件字段、以及该SQL语句的数据库连接;解析单元601是图6所示字段信息确定模块501中负责完成SQL语句解析功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
查询单元602,用于根据数据库连接链接到对应的数据库,在数据库中根据数据库表信息查找该SQL语句对应的数据库表,在数据库表中查找该SQL语句中查询条件字段的字段信息。查询单元602是图6所示字段信息确定模块501中负责完成字段信息查询功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件。
在一个实施例中,查询单元602还可以用于:在查找到数据库表之后,获取数据库表的大小和已有索引信息;如图7所示,本例中数据库索引创建装置可以进一步包括:
数据判定模块701,用于在该SQL语句中查询条件字段未能匹配已有索引信息,且数据库表的大小符合预设条件时,确定数据库表中是否有有效数据;数据判定模块701是图7所示数据库索引创建装置中负责完成数据判定功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
数据处理模块702,用于在数据库表中有有效数据时,基于数据库表中的有效数据分布为该SQL语句创建数据库索引;数据处理模块702是图7所示数据库索引创建装置中负责完成基于有效数据分布进行数据库索引创建功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
创建触发模块703,用于在数据库表中没有有效数据时,触发权重计算模块502、字段排序模块503及索引创建模块504执行相应功能。创建触发模块703是图7所示数据库索引创建装置中负责完成触发基于字段规则进行数据库索引创建功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件。
在一个实施例中,字段信息确定模块501具体可以用于确定每一查询条件字段的字段类型、字段长度和字段名称;
权重计算模块502具体可以用于:根据每一查询条件字段的字段类型、字段长度和字段名称,计算每一查询条件字段的权重。
在一个实施例中,权重计算模块502具体可以用于按如下公式计算查询条件字段的权重:
weight=(columnTypeweight+columnLengthWeight)×columnNameWeight;
其中,weight为查询条件字段的权重,columnTypeweight为查询条件字段的字段类型的权重,columnLengthWeight为查询条件字段的字段长度的权重,columnNameWeight为查询条件字段的字段名称的权重。
图8为本申请实施例中另一数据库索引创建装置的示意图。如图8所示,该数据库索引创建装置可以包括:
字段信息确定模块801,用于在对数据库的每一SQL语句创建数据库索引时,确定一SQL语句中每一查询条件字段的字段信息;字段信息确定模块801是图8所示数据库索引创建装置中负责完成字段信息确定功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
权重计算模块802,用于根据所述每一查询条件字段的字段信息,计算每一查询条件字段的权重;权重计算模块802是图8所示数据库索引创建装置中负责完成字段权重计算功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
索引创建模块803,用于根据每一查询条件字段的权重为该SQL语句创建数据库索引。索引创建模块803是图8所示数据库索引创建装置中负责完成索引创建功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件。
图9为本申请实施例中图8所示数据库索引创建装置的具体实例图。如图9所示,本例中数据库索引创建装置中字段信息确定模块801可以包括:
解析单元901,用于对该SQL语句进行解析,获得该SQL语句对应的数据库表信息、该SQL语句中查询条件字段、以及该SQL语句的数据库连接;解析单元901是图9所示字段信息确定模块801中负责完成SQL语句解析功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
查询单元902,用于根据数据库连接链接到对应的数据库,在数据库中根据数据库表信息查找该SQL语句对应的数据库表,在数据库表中查找该SQL语句中查询条件字段的字段信息。查询单元902是图9所示字段信息确定模块801中负责完成字段信息查询功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件。
在一个实施例中,查询单元902还可以用于:在查找到数据库表之后,获取已有索引信息;如图10所示,本例中数据库索引创建装置可以进一步包括:
数据判定模块1001,用于在该SQL语句中查询条件字段未能匹配已有索引信息时,确定数据库表中是否有有效数据;数据判定模块1001是图10所示数据库索引创建装置中负责完成数据判定功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
数据处理模块1002,用于在数据库表中有有效数据时,基于数据库表中的有效数据分布为该SQL语句创建数据库索引;数据处理模块1002是图10所示数据库索引创建装置中负责完成基于有效数据分布进行数据库索引创建功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件;
创建触发模块1003,用于在数据库表中没有有效数据时,触发权重计算模块802及索引创建模块803执行相应功能。创建触发模块1003是图10所示数据库索引创建装置中负责完成触发基于字段规则进行数据库索引创建功能的部分,可以是软件、硬件或二者的结合,例如可以是完成该提供功能的处理芯片等元器件。
在一个实施例中,查询单元902还用于:在查找到数据库表之后,获取数据库表的大小;数据判定模块1001具体用于在该SQL语句中查询条件字段未能匹配已有索引信息,且数据库表的大小符合预设条件时,确定数据库表中是否有有效数据。
在一个实施例中,字段信息确定模块801具体可以用于确定每一查询条件字段的字段类型、字段长度和字段名称;
权重计算模块802具体可以用于:根据每一查询条件字段的字段类型、字段长度和字段名称,计算每一查询条件字段的权重。
在一个实施例中,权重计算模块802具体可以用于按如下公式计算查询条件字段的权重:
weight=(columnTypeweight+columnLengthWeight)×columnNameWeight;
其中,weight为查询条件字段的权重,columnTypeweight为查询条件字段的字段类型的权重,columnLengthWeight为查询条件字段的字段长度的权重,columnNameWeight为查询条件字段的字段名称的权重。
在一个实施例中,索引创建模块803具体用于:根据每一查询条件字段的权重,对该SQL语句中查询条件字段进行排序;根据排序后的查询条件字段为该SQL语句创建数据库索引。
综上所述,本申请实施例中,在对数据库的每一SQL语句创建数据库索引时,确定一SQL语句中每一查询条件字段的字段信息;根据所述每一查询条件字段的字段信息,计算所述每一查询条件字段的权重;根据所述每一查询条件字段的权重,为该SQL语句创建数据库索引;从而实现数据库索引的自动创建,创建过程中不需要考虑业务场景,不依赖DBA的数据库经验,也不需要基于数据库中有效数据分布,避免了业务场景及数据库中无有效数据分布对数据库索引创建的影响,提高了数据库索引创建的效率,尤其适用于新业务的上线运行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (7)
1.一种数据库索引创建方法,其特征在于,包括按如下方式对数据库的每一结构化查询语言SQL语句创建数据库索引:
确定一SQL语句中每一查询条件字段的字段信息;
根据所述每一查询条件字段的字段信息,计算所述每一查询条件字段的权重,包括:根据查询条件字段的字段类型、字段长度和字段名称,计算查询条件字段的权重;
根据所述每一查询条件字段的权重,为该SQL语句创建数据库索引。
2.如权利要求1所述的方法,其特征在于,所述确定一SQL语句中每一查询条件字段的字段信息,包括:
对该SQL语句进行解析,获得该SQL语句对应的数据库表信息、该SQL语句中查询条件字段、以及该SQL语句的数据库连接;
根据所述数据库连接链接到对应的数据库,在所述数据库中根据所述数据库表信息查找该SQL语句对应的数据库表,在所述数据库表中查找该SQL语句中查询条件字段的字段信息。
3.如权利要求2所述的方法,其特征在于,在查找到所述数据库表之后,还获取所述数据库表的已有索引信息;
在该SQL语句中查询条件字段未能匹配已有索引信息时,进一步确定所述数据库表中是否有有效数据;若有,则基于所述数据库表中的有效数据分布为该SQL语句创建数据库索引;若无,则仍旧根据所述每一查询条件字段的权重为该SQL语句创建数据库索引。
4.如权利要求3所述的方法,其特征在于,在查找到所述数据库表之后,还获取所述数据库表的大小;
所述在该SQL语句中查询条件字段未能匹配已有索引信息时,进一步确定所述数据库表中是否有有效数据,包括:在该SQL语句中查询条件字段未能匹配已有索引信息,且所述数据库表的大小符合预设条件时,进一步确定所述数据库表中是否有有效数据。
5.如权利要求1所述的方法,其特征在于,根据查询条件字段的字段类型、字段长度和字段名称,计算查询条件字段的权重,包括按如下公式计算查询条件字段的权重:
weight=(columnTypeweight+columnLengthWeight)×columnNameWeight;
其中,weight为查询条件字段的权重,columnTypeweight为查询条件字段的字段类型的权重,columnLengthWeight为查询条件字段的字段长度的权重,columnNameWeight为查询条件字段的字段名称的权重。
6.如权利要求1所述的方法,其特征在于,根据所述每一查询条件字段的权重,为该SQL语句创建数据库索引,包括:
根据所述每一查询条件字段的权重,对该SQL语句中查询条件字段进行排序;
根据排序后的查询条件字段为该SQL语句创建数据库索引。
7.一种数据库索引创建装置,其特征在于,包括:
字段信息确定模块,用于在对数据库的每一SQL语句创建数据库索引时,确定一SQL语句中每一查询条件字段的字段信息;
权重计算模块,用于根据所述每一查询条件字段的字段信息,计算所述每一查询条件字段的权重,包括:根据查询条件字段的字段类型、字段长度和字段名称,计算查询条件字段的权重;
索引创建模块,用于根据所述每一查询条件字段的权重,为该SQL语句创建数据库索引。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510695433 | 2015-10-23 | ||
CN2015106954338 | 2015-10-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107016019A CN107016019A (zh) | 2017-08-04 |
CN107016019B true CN107016019B (zh) | 2021-02-23 |
Family
ID=59439545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610920814.6A Active CN107016019B (zh) | 2015-10-23 | 2016-10-21 | 数据库索引创建方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107016019B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920664B (zh) * | 2018-07-05 | 2022-04-15 | 福建星瑞格软件有限公司 | 一种基于索引价值的数据库智能索引实现方法 |
CN108984698B (zh) * | 2018-07-05 | 2023-06-27 | 福建星瑞格软件有限公司 | 一种数据库业务行为的建模方法 |
CN109308286A (zh) * | 2018-09-11 | 2019-02-05 | 李宗平 | 一种基于文件存储的sql检索方法 |
CN110909072B (zh) * | 2018-09-18 | 2023-07-18 | 阿里巴巴集团控股有限公司 | 一种数据表建立方法、装置及设备 |
CN109542962B (zh) * | 2018-10-26 | 2021-04-06 | 北京海数宝科技有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110245137B (zh) * | 2019-05-07 | 2023-06-27 | 创新先进技术有限公司 | 一种索引的处理方法、装置及设备 |
CN110750555A (zh) * | 2019-10-22 | 2020-02-04 | 中国工商银行股份有限公司 | 用于生成索引的方法、装置、计算设备以及介质 |
CN113760890A (zh) * | 2020-11-24 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 关系型数据库管理的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101609460A (zh) * | 2009-07-22 | 2009-12-23 | 中国科学院地理科学与资源研究所 | 一种支持异构地学数据资源的检索方法及检索系统 |
CN101667183A (zh) * | 2008-09-02 | 2010-03-10 | 浙江大学 | 一种基于定制的索引建立方法、装置和系统 |
CN102867064A (zh) * | 2012-09-28 | 2013-01-09 | 用友软件股份有限公司 | 关联字段查询装置和关联字段查询方法 |
CN103810212A (zh) * | 2012-11-14 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 一种数据库索引的自动创建方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7584221B2 (en) * | 2004-03-18 | 2009-09-01 | Microsoft Corporation | Field weighting in text searching |
US7917493B2 (en) * | 2007-04-19 | 2011-03-29 | Retrevo Inc. | Indexing and searching product identifiers |
-
2016
- 2016-10-21 CN CN201610920814.6A patent/CN107016019B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101667183A (zh) * | 2008-09-02 | 2010-03-10 | 浙江大学 | 一种基于定制的索引建立方法、装置和系统 |
CN101609460A (zh) * | 2009-07-22 | 2009-12-23 | 中国科学院地理科学与资源研究所 | 一种支持异构地学数据资源的检索方法及检索系统 |
CN102867064A (zh) * | 2012-09-28 | 2013-01-09 | 用友软件股份有限公司 | 关联字段查询装置和关联字段查询方法 |
CN103810212A (zh) * | 2012-11-14 | 2014-05-21 | 阿里巴巴集团控股有限公司 | 一种数据库索引的自动创建方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107016019A (zh) | 2017-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107016019B (zh) | 数据库索引创建方法及装置 | |
CN107016018B (zh) | 数据库索引创建方法及装置 | |
CN107609217B (zh) | 碰撞校核数据的处理方法及装置 | |
EP2862101B1 (en) | Method and a consistency checker for finding data inconsistencies in a data repository | |
CN104268216A (zh) | 一种基于互联网信息的数据清洗系统 | |
CN104268064A (zh) | 产品日志的异常诊断方法和装置 | |
CN112364014B (zh) | 数据查询方法、装置、服务器及存储介质 | |
CN111324781A (zh) | 一种数据分析方法、装置及设备 | |
CN111382083A (zh) | 测试数据的生成方法及装置 | |
US8463799B2 (en) | System and method for consolidating search engine results | |
CN111767265B (zh) | 一种连接操作中数据倾斜方法、系统及计算机设备 | |
CN111078728A (zh) | 一种数据库归档模式下跨库查询方法和装置 | |
CN107273293B (zh) | 大数据系统性能测试方法、装置及电子设备 | |
CN115455091A (zh) | 数据生成方法、装置、电子设备和存储介质 | |
CN111881146B (zh) | 用于收取费用的方法、计算设备和介质 | |
CN114416489A (zh) | 系统运行状态的监控方法、装置、计算机设备及存储介质 | |
CN111143356B (zh) | 报表检索方法及装置 | |
CN110895529B (zh) | 结构化查询语言的处理方法及相关装置 | |
CN114020640A (zh) | 自动化测试方法及装置 | |
CN105589803B (zh) | 一种测试工具的生成方法和终端设备 | |
CN109408538B (zh) | 云平台中自动发放云组件实现大规模融合查询方法及系统 | |
CN112084193A (zh) | 一种日志查询方法、日志存储方法以及相关设备 | |
CN111562937A (zh) | 一种代码方法级缺陷预警方法 | |
CN110825453A (zh) | 基于大数据平台的数据处理方法及装置 | |
CN115454354B (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 |