System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于数据库索引,具体涉及创建数据库索引的方法。
技术介绍
1、针对目前市面上的关系型数据库(如oracle sqlserver mysql pg等),对其建立非聚集索引(或者叫二级索引、辅助索引),并且力争创建出来的索引是比较理想的,以便解决数据库可能由于数据量大而引起的性能问题,一个有效的好的索引非常重要,带来的收益可以高于多个cpu的叠加效果,以及多个内存叠加等方式带来的硬件效果,索引时经常出现的问题有:1、在创建了索引的情况下,没有使用该索引;2、虽然使用了相应索引,但是消耗仍然非常大,时间消耗仍然非常长。由此,需要创建一种有效并且高效的索引方式,以便提高数据库的响应性能。
技术实现思路
1、本专利技术的目的是提供创建数据库索引的方法,用以解决现有技术中存在的上述问题。
2、为了实现上述目的,本专利技术采用以下技术方案:
3、一种创建数据库索引的方法,包括以下步骤:
4、判断sql语句的操作类型是否需要建立索引:判断sql语句的操作类型,对操作类型含有查询、修改以及删除含义的sql语句建立索引;
5、识别sql语句的表连接类型;
6、识别表类型,所述表类型包括用户表和系统表,提取用户表的字段名;对所述系统表进行忽略;所述字段名包括多种类型的字段;所述字段包括:条件字段、分组排序字段、查询展示字段及修改设置字段;
7、根据预设的字段加入规则,确认需要加入到索引的字段;
8、根据所述表连
9、进一步的,预设的字段加入规则包括:
10、获取通过条件字段筛选过滤之后的行数量,判断行数量是否大于预设阈值或行数量是否大于对应表总行数百分比的预设值,若是,则将sql语句里面的所有字段都添加到索引里;若否,将条件字段添加到索引。
11、进一步的,预设的字段加入规则包括:
12、获取字段数量以及索引长度,如果字段数量超过预设索引字段数量的限制,则依次按照条件字段、分组排序字段、查询展示字段和/或修改设置字段的顺序加入到索引。
13、进一步的,预设的字段加入规则包括:
14、去除存在超过预设长度的大字符字段;
15、去除存在超过预设修改频率的字段;
16、如果整个查询展示字段中的某个字段由于预设规则没有添加到索引,则去除对应的整个查询展示字段;
17、如果整个分组排序字段中的某个字段由于预设规则没有添加到索引,则去除对应的整个分组排序字段;
18、如果整个修改设置字段的某个字段由于预设规则没有添加到索引,则去除对应的整个修改设置字段。
19、进一步的,预设的字段加入规则包括:将预设的界定为选择性差的字段添加到索引。
20、进一步的,预设的字段加入规则包括:如字段类型只有分组排序字段以及查询展示字段,将所述分组排序字段以及查询展示字段都添加到索引。
21、进一步的,根据所述表连接类型对应的预设的字段排序规则,对加入到索引的字段从左到右进行排序,排序的方法包括:
22、若sql语句中不存在分组排序字段,则进行如下操作:
23、创建出来的索引其字段从左到右依次为:第一字段、第二字段和剩余字段,
24、所述第一字段包括等值条件字段中的全部或者部分字段和/或isnull条件字段中的全部或者部分字段,第一字段中的等值条件字段和isnull条件字段可以互相调换;
25、所述第二字段是条件字段中过滤效果最好的范围条件字段,过滤效果最好的范围条件字段是根据预设的过滤效果判断条件判断得到;
26、所述剩余字段是当前sql语句中除了第一字段和第二字段后剩下的字段,所述剩余字段的多个字段之间的顺序可以互相调换;
27、第一字段是等值条件字段部分字段时和/或isnull条件字段的部分字段时,记为a型第一字段;第一字段是等值条件字段全部字段时和/或isnull条件字段是全部字段时,记为b型第一字段;
28、设所述b型第一字段加上第二字段过滤得到的行数量为α,所述a型第一字段加上第二字段过滤得到的行数量为β,如果满足β-α<γ,所述γ为第一预设阈值,则第一字段选用a型第一字段或选择b型第一字段;如果不满足,则第一字段选择b型第一字段;
29、若sql语句存在分组排序字段,则进行如下操作:
30、获取sql语句中条件字段中的过滤效果优等字段,所述过滤效果优等字段是条件字段中满足预设过滤要求的范围条件字段;
31、当满足以下条件时:
32、所述分组排序字段的第一个字段与所述过滤效果优等字段中的某一字段相同;或
33、第一字段过滤出来的行数量与加上所有的范围条件字段之后过滤出来的行数量之间的差值小于第四预设阈值;或
34、将分组排序字段的第一个字段紧跟在所述第一字段之后进行查询,获取的行数量为c,将所述第二字段紧跟在所述第一字段之后进行查询,获取的行数量为d,该sql所有字段过滤后的行数量e,若(c-d)/e小于等于j,j为第五预设阈值;
35、则创建出来的索引字段从左到右依次为第一字段、分组排序字段和剩余字段;
36、若不满足,则创建出来的索引字段从左到右依次为第一字段、第二字段和剩余字段。
37、进一步的,根据所述表连接类型对应的预设的字段排序规则,所述表连接类型包括单表连接类型和多表连接类型;当表连接类型为多表连接类型时,还进行如下操作:
38、若sql语句存在分组排序字段,且分组排序字段全是针对多张表中的某一张表x的字段时;
39、获取每张表的本地条件字段过滤出来的行数量;
40、判断表x通过本地条件字段过滤出来的行数量与另一个相关联的表通过本地条件字段过滤出来的行数量的差值是否小于等于第六预设阈值,若是,则选择排序分组字段所在的表x作为入口表;所述入口表为多表连接查询时采用嵌套循环时的驱动表;
41、当表x通过本地条件字段过滤出来的行数量与另一个相关联的表通过本地条件字段过滤出来的行数量的差值大于所述第六预设阈值,则按照下列规则进行判断:
42、设分组排序字段所在的表通过本地条件字段过滤出来的行数量的值为m,另一个相关联的表通过相应的本地条件字段过滤出来的行数量的值为n,两表关联之后需要排序的行数量的值为g,
43、当(m-n)/g<h时,h为预设值,选择将分组排序字段所在的表作为入口表。
44、分组排序字段所在的表通过本地条件字段过滤出来的行数量的值减去另一个相关联的表通过本地条件字段过滤出来的行数量的值除以两表关联之后需要排序的行数量的值小于预设阈值,此时选择将分组排序字段所在的表作为入口表。
45、进一步的,寻找第二字段时,当该索引的左侧具有第一本文档来自技高网...
【技术保护点】
1.一种创建数据库索引的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:
3.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:
4.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:
5.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:将预设的界定为选择性差的字段添加到索引。
6.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:如字段类型只有分组排序字段以及查询展示字段,将所述分组排序字段以及查询展示字段都添加到索引。
7.根据权利要求1所述的创建数据库索引的方法,其特征在于,根据所述表连接类型对应的预设的字段排序规则,对加入到索引的字段从左到右进行排序,排序的方法包括:
8.根据权利要求7所述的创建数据库索引的方法,其特征在于,
9.根据权利要求7所述的创建数据库索引的方法,其特征在于,
...
【技术特征摘要】
1.一种创建数据库索引的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:
3.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:
4.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:
5.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:将预设的界定为选择性差的字段添加到索引。
6.根据权利要求1所述的创建数据库索引的方法,其特征在于,预设的字段加入规则包括:如字段类型只有分组排序字段以及查询展示字段,将所述分组排序...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。