CN109408515A - 一种索引执行方法与装置 - Google Patents
一种索引执行方法与装置 Download PDFInfo
- Publication number
- CN109408515A CN109408515A CN201811293260.7A CN201811293260A CN109408515A CN 109408515 A CN109408515 A CN 109408515A CN 201811293260 A CN201811293260 A CN 201811293260A CN 109408515 A CN109408515 A CN 109408515A
- Authority
- CN
- China
- Prior art keywords
- index
- visible
- cost
- literary name
- name section
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种索引执行方法与装置,包括:在同一表字段上创建多个可见索引;从每个可见索引中收集索引统计信息;根据索引统计信息计算每个可见索引的代价;根据代价确定其中一个可见索引在表字段上执行。本发明的技术方案能够根据不同表字段或不同类型的表字段选取对其效率最高的索引,提高数据库的执行效率。
Description
技术领域
本发明涉及数据库领域,并且更具体地,特别是涉及一种索引执行方法与装置。
背景技术
现阶段数据库实现了可以在一个表字段上可以创建多种类型的索引,比如表A可以在字段colA上创建一个B树索引,同时也能在colA上创建位图索引、反向索引等,即一个字段上可以同时存在多种索引。但创建的多种索引中,只能有一个索引设置为可见的,其他索引必须设置为不可见,这就会导致优化器在选择索引方面只会考虑可见的索引,不会去选择不可见索引,从导致即使不可见索引的优化效率比可见索引的优化效率高时也无法选择的问题。
针对现有技术中优化器无法选择高优化效率索引导致数据库执行效率低的问题,目前尚未有有效的解决方案。
发明内容
有鉴于此,本发明实施例的目的在于提出一种索引执行方法与装置,能够根据不同表字段或不同类型的表字段选取对其效率最高的索引,提高数据库的执行效率。
基于上述目的,本发明实施例的一方面提供了一种索引执行方法,包括以下步骤:
在同一表字段上创建多个可见索引;
从每个可见索引中收集索引统计信息;
根据索引统计信息计算每个可见索引的代价;
根据代价确定其中一个可见索引在表字段上执行。
在一些实施方式中,在同一表字段上创建多个可见索引包括:创建多个种类不同的可见索引。
在一些实施方式中,从每个所述可见索引中收集索引统计信息包括收集索引分块大小和/或叶节点数。
在一些实施方式中,根据所述索引统计信息计算每个可见索引的代价包括:计算每个可见索引在数据库中执行时的可执行计划的代价。
在一些实施方式中,根据代价确定其中一个可见索引包括:比较代价,并确定代价最小的可见索引。
在一些实施方式中,可见索引为以下之一:B树索引、位图索引、反向索引。
在一些实施方式中,计算每个可见索引的代价由优化器执行,并且多个可见索引是优化器可见的。
在一些实施方式中,数据库为mySQL。
本发明实施例的另一方面,还提供了一种索引执行装置,包括:
控制器;和
存储器,存储器存储有控制器可运行的程序代码,程序代码在被运行时执行上述的方法。
本发明实施例的另一方面,还提供了一种数据库服务器,包括控制器和存储器,所述存储器存储有控制器可运行的程序代码,所述程序代码在被运行时实现以下软件模块:
表字段;
在表字段上创建的多个可见索引;
从每个可见索引中收集索引统计信息的信息收集器;
根据索引统计信息计算每个可见索引的代价的优化器;
根据代价来选择在表字段上执行的可见索引的选择器。
本发明具有以下有益技术效果:本发明实施例提供的索引执行方法与装置,通过在同一表字段上创建多个可见索引,从每个可见索引中收集索引统计信息,根据索引统计信息计算每个可见索引的代价,根据代价确定其中一个可见索引在表字段上执行的技术方案,能够根据不同表字段或不同类型的表字段选取对其效率最高的索引,提高数据库的执行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的索引执行方法的流程示意图;
图2为本发明提供的索引执行方法的实施例示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”、“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例的第一个方面,提出了一种能够根据不同表字段或不同类型的表字段选取对其效率最高的索引的索引执行方法的实施例。图1示出的是本发明提供的索引执行方法的实施例的流程示意图。
所述索引执行方法,包括以下步骤:
步骤S101,在同一表字段上创建多个可见索引;
步骤S103,从每个可见索引中收集索引统计信息;
步骤S105,根据索引统计信息计算每个可见索引的代价;
步骤S107,根据代价确定其中一个可见索引在表字段上执行。
本发明实施例在相同字段上创建的索引全部为可见索引,对优化器可见,然后通过收集相关索引的系统信息,让优化器去判断每个索引的可执行计划的代价,做代价比较后,选择代价最小的索引应用到优化器中,提高数据库的执行效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。所述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
在一些实施方式中,在同一表字段上创建多个可见索引包括:创建多个种类不同的可见索引。
在一些实施方式中,收集索引统计信息包括收集索引分块大小和/或叶节点数。
在一些实施方式中,计算每个可见索引的代价包括:计算每个可见索引在数据库中执行时的可执行计划的代价。
在一些实施方式中,根据代价确定一个可见索引包括:比较代价,并确定代价最小的可见索引。
在一些实施方式中,可见索引为以下之一:B树索引、位图索引、反向索引。
在一些实施方式中,计算每个可见索引的代价由优化器执行,并且多个可见索引是优化器可见的。
在一些实施方式中,数据库为mySQL。
根据本发明实施例公开的方法还可以被实现为由CPU执行的计算机程序,该计算机程序可以存储在计算机可读存储介质中。在该计算机程序被CPU执行时,执行本发明实施例公开的方法中限定的上述功能。上述方法步骤也可以利用控制器以及用于存储使得控制器实现上述步骤的计算机程序的计算机可读存储介质实现。
在如图2所示的实施例中,表A具有表字段colA。
本发明首先在表A的字段colA分别创建不同种类的索引:可见索引1、可见索引2…可见索引N,并保证创建的索引对优化器是可见的。然后利用信息收集器对已经创建的索引进行统计信息收集(例如,收集索引的block块大小、叶子节点数等等)。在统计信息收集完毕后,优化器开始计算每个索引的代价,优化器根据已获取到的统计信息分别计算SQL在使用每个索引的代价大小,即优化器使用每个索引的执行计划的代价值。下一步,根据计算得出的代价值,优化器选择代价值最小的索引作为最优执行计划。最后执行器从优化器得到最优执行计划后,按照此优化路径选择对应索引,进行SQL的最终执行。
结合这里的公开所描述的各种示例性步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
从上述实施例可以看出,本发明实施例提供的索引执行方法,通过在同一表字段上创建多个可见索引,从每个可见索引中收集索引统计信息,根据索引统计信息计算每个可见索引的代价,根据代价确定一个可见索引在表字段上执行的技术方案,能够根据不同表字段或不同类型的表字段选取对其效率最高的索引,提高数据库的执行效率。
需要特别指出的是,上述索引执行方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于索引执行方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
基于上述目的,本发明实施例的第二个方面,提出了一种能够根据不同表字段或不同类型的表字段选取对其效率最高的索引的索引执行装置的实施例。所述装置包括:
控制器;和
存储器,存储器存储有控制器可运行的程序代码,程序代码在被运行时执行上述方法。
本发明实施例公开所述的装置、设备等可为各种电子终端设备,例如手机、个人数字助理(PDA)、平板电脑(PAD)、智能电视等,也可以是大型终端设备,如服务器等,因此本发明实施例公开的保护范围不应限定为某种特定类型的装置、设备。本发明实施例公开所述的客户端可以是以电子硬件、计算机软件或两者的组合形式应用于上述任意一种电子终端设备中。
基于上述目的,本发明实施例的第三个方面,提出了一种数据库服务器实施例。所述数据库服务器包括控制器和存储器,存储器存储有控制器可运行的程序代码,该程序代码在被运行时实现以下软件模块:
表字段;
在表字段上创建的多个可见索引;
从每个可见索引中收集索引统计信息的信息收集器;
根据索引统计信息计算每个可见索引的代价的优化器;
根据代价来选择在表字段上执行的可见索引的选择器。
本文所述的计算机可读存储介质(例如存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
从上述实施例可以看出,本发明实施例提供的索引执行装置和数据库服务器,通过在同一表字段上创建多个可见索引,从每个可见索引中收集索引统计信息,根据索引统计信息计算每个可见索引的代价,根据代价确定一个可见索引在表字段上执行的技术方案,能够根据不同表字段或不同类型的表字段选取对其效率最高的索引,提高数据库服务器的执行效率。
需要特别指出的是,上述索引执行装置和数据库服务器的实施例采用了所述索引执行方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到所述索引执行方法的其他实施例中。当然,由于所述索引执行方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于索引执行装置和数据库也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
1.一种索引执行方法,其特征在于,应用于数据库,包括以下步骤:
在同一表字段上创建多个可见索引;
从每个所述可见索引中收集索引统计信息;
根据所述索引统计信息计算每个所述可见索引的代价;
根据所述代价确定其中一个可见索引在所述表字段上执行。
2.根据权利要求1所述的方法,其特征在于,在同一表字段上创建所述多个可见索引包括:创建多个种类不同的可见索引。
3.根据权利要求1所述的方法,其特征在于,从每个所述可见索引中收集索引统计信息包括收集索引分块大小和/或叶节点数。
4.根据权利要求1所述的方法,其特征在于,根据所述索引统计信息计算每个所述可见索引的代价包括:计算每个所述可见索引在数据库中执行时的可执行计划的代价。
5.根据权利要求1所述的方法,其特征在于,根据所述代价确定其中一个可见索引包括:比较所述代价,并确定所述代价最小的可见索引。
6.根据权利要求1所述的方法,其特征在于,所述可见索引为以下之一:B树索引、位图索引、反向索引。
7.根据权利要求1所述的方法,其特征在于,计算每个所述可见索引的代价由优化器执行,并且多个可见索引是所述优化器可见的。
8.根据权利要求1所述的方法,其特征在于,所述数据库为mySQL。
9.一种索引执行装置,其特征在于,包括:
控制器;和
存储器,所述存储器存储有控制器可运行的程序代码,所述程序代码在被运行时执行如权利要求1-9中任意一项所述的方法。
10.一种数据库服务器,其特征在于,包括控制器和存储器,所述存储器存储有控制器可运行的程序代码,所述程序代码在被运行时实现以下软件模块:
表字段;
在所述表字段上创建的多个可见索引;
从每个所述可见索引中收集索引统计信息的信息收集器;
根据所述索引统计信息计算每个所述可见索引的代价的优化器;
根据所述代价来选择在所述表字段上执行的可见索引的选择器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811293260.7A CN109408515A (zh) | 2018-11-01 | 2018-11-01 | 一种索引执行方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811293260.7A CN109408515A (zh) | 2018-11-01 | 2018-11-01 | 一种索引执行方法与装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109408515A true CN109408515A (zh) | 2019-03-01 |
Family
ID=65471073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811293260.7A Pending CN109408515A (zh) | 2018-11-01 | 2018-11-01 | 一种索引执行方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408515A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190897A (zh) * | 2019-11-07 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 信息处理方法、装置、存储介质及服务器 |
CN111666279A (zh) * | 2020-04-14 | 2020-09-15 | 阿里巴巴集团控股有限公司 | 查询数据处理方法、装置、电子设备及计算机存储介质 |
CN111767289A (zh) * | 2020-09-02 | 2020-10-13 | 成都四方伟业软件股份有限公司 | 一种基于内存数据库的数据存储方法及装置 |
CN114168800A (zh) * | 2021-11-26 | 2022-03-11 | 哈尔滨工程大学 | 一种基于b+树和位图索引融合树的冲突检测方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1652112A (zh) * | 2005-03-02 | 2005-08-10 | 北京北方烽火科技有限公司 | 一种嵌入式环境下数据字典的实现方法 |
CN1671103A (zh) * | 2004-03-15 | 2005-09-21 | 微软公司 | 数据压缩 |
CN102651007A (zh) * | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 一种管理数据库索引的方法和装置 |
CN103390066A (zh) * | 2013-08-08 | 2013-11-13 | 上海新炬网络技术有限公司 | 一种数据库全局性自动化优化预警装置及其处理方法 |
CN106033469A (zh) * | 2014-11-14 | 2016-10-19 | 塔塔顾问服务有限公司 | 用于大数据的结构化查询的高效性能预测的方法和系统 |
CN106446153A (zh) * | 2016-09-21 | 2017-02-22 | 广州特道信息科技有限公司 | 一种分布式newSQL数据库系统及方法 |
-
2018
- 2018-11-01 CN CN201811293260.7A patent/CN109408515A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1671103A (zh) * | 2004-03-15 | 2005-09-21 | 微软公司 | 数据压缩 |
CN1652112A (zh) * | 2005-03-02 | 2005-08-10 | 北京北方烽火科技有限公司 | 一种嵌入式环境下数据字典的实现方法 |
CN102651007A (zh) * | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 一种管理数据库索引的方法和装置 |
CN103390066A (zh) * | 2013-08-08 | 2013-11-13 | 上海新炬网络技术有限公司 | 一种数据库全局性自动化优化预警装置及其处理方法 |
CN106033469A (zh) * | 2014-11-14 | 2016-10-19 | 塔塔顾问服务有限公司 | 用于大数据的结构化查询的高效性能预测的方法和系统 |
CN106446153A (zh) * | 2016-09-21 | 2017-02-22 | 广州特道信息科技有限公司 | 一种分布式newSQL数据库系统及方法 |
Non-Patent Citations (2)
Title |
---|
LEO-2016: "Oracle 12c 新特性 --- 同一列上可建多个索引", 《HTTPS://BLOG.CSDN.NET/LEO__1990/ARTICLE/DETAILS/90032780》 * |
WEIXIN_41561946: "pg、mysql、oracle同一列是否能创建两个索引", 《HTTPS://BLOG.CSDN.NET/WEIXIN_41561946/ARTICLE/DETAILS/104622898》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190897A (zh) * | 2019-11-07 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 信息处理方法、装置、存储介质及服务器 |
CN111666279A (zh) * | 2020-04-14 | 2020-09-15 | 阿里巴巴集团控股有限公司 | 查询数据处理方法、装置、电子设备及计算机存储介质 |
CN111767289A (zh) * | 2020-09-02 | 2020-10-13 | 成都四方伟业软件股份有限公司 | 一种基于内存数据库的数据存储方法及装置 |
CN114168800A (zh) * | 2021-11-26 | 2022-03-11 | 哈尔滨工程大学 | 一种基于b+树和位图索引融合树的冲突检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109408515A (zh) | 一种索引执行方法与装置 | |
JP6928104B2 (ja) | ブロック・チェーンにサービス・データを書き込むための方法および装置、ならびにサービス・サブセットを判定するための方法 | |
CN109542428A (zh) | 业务处理方法、装置、计算机设备和存储介质 | |
CN105843933B (zh) | 分布式内存列式数据库的索引建立方法 | |
CN107066534B (zh) | 多源数据聚合方法及系统 | |
EP3640813B1 (en) | Cluster-based random walk method and apparatus | |
US8463840B2 (en) | Method for selecting node in network system and system thereof | |
CN106294740A (zh) | 数据处理方法、装置及服务器 | |
CN107133533B (zh) | 一种基于多重成组延时的物理不可克隆函数电路结构 | |
CN108984744A (zh) | 一种非主链区块自增长方法 | |
US20210216225A1 (en) | Method, device and computer program product for storage | |
CN106097001A (zh) | 积分数据处理方法和装置 | |
CN104699415A (zh) | 固态硬盘写入控制方法和装置 | |
CN109271461A (zh) | SQL Server数据库的增量合成备份方法和装置 | |
Maes et al. | Ergodicity of probabilistic cellular automata: a constructive criterion | |
CN113821373B (zh) | 提高磁盘地址转换速度的方法、系统、设备和存储介质 | |
US20150234717A1 (en) | Network Data Rollback Method and Device | |
CN110502832A (zh) | 一种电路板设计的方法及装置 | |
CN110413338A (zh) | 一种配置大数据平台的方法、设备及可读介质 | |
CN110321512A (zh) | 产品发布方法、装置、计算机设备和存储介质 | |
CN101098495A (zh) | 一种提高智能业务在线统计任务性能的系统及方法 | |
JP2016091488A (ja) | データソート方法およびプログラム | |
CN116303425A (zh) | 一种在区块链中创建账户的方法和区块链节点 | |
CN115640356A (zh) | 区块链系统中的交易执行方法、共识节点和区块链系统 | |
CN108768239A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190301 |