English
购物车图片 购物车 ( )
最专业的品牌服务,为您创造更高的价值
总体概述 客户评价

【干货分享】组合索引在DM7中的使用情况


【干货分享】组合索引在DM7中的使用情况


在实际工作中,为了提高表查询的效率,我们会在表上创建各种索引。但是,有时候我们虽然创建了组合索引,查询效率并没有提高,这是为什么呢?本文将带大家一探究竟。

 

实验背景:


1、确认数据库版本:


DM Database Server x64V7.1.6.46-Build(2018.02.08-89107)ENT


2、创建测试用表并录入测试数据


表结构如下


【干货分享】组合索引在DM7中的使用情况


并录入10000条测试数据,具体步骤可参考上一期干货分享DM7中产生随机数据的方法。


3、创建索引


【干货分享】组合索引在DM7中的使用情况


这个组合索引中,列的顺序为MATH,ENGLISH,SCIENCE

 

实验考虑以下四种情况:


一. 3个字段都是等值查询,例如


【干货分享】组合索引在DM7中的使用情况


查询执行计划如下:


【干货分享】组合索引在DM7中的使用情况


这里是直接从索引中调取的结果


二. MATH不等值,ENGLISH和SCIENCE两列等值,例如


【干货分享】组合索引在DM7中的使用情况


通过执行计划可以看出并没有调用到索引。


【干货分享】组合索引在DM7中的使用情况


三. MATH和ENGLISH等值,第三列SCIENCE不等值,例如


【干货分享】组合索引在DM7中的使用情况


执行计划有调用到index_test索引查询出MATH=60 and ENGLISH=60的所有值,再从里面选择出science<>60的值


【干货分享】组合索引在DM7中的使用情况


四、MATH等值,后面两列不等值,例如


\

【干货分享】组合索引在DM7中的使用情况

【干货分享】组合索引在DM7中的使用情况


从执行计划来看也是没有利用到索引的


通过这几种情况,我们可以得到组合索引的几个特点:


1.如果查询中经常会利用多个字段进行组合定位,我们可以在这几个字段上建立组合索引。


2.在做等值查询的时候,组合索引中各个列的顺序是无关紧要的,这个从实验结果一可以看出,列的顺序变化之后还能是正常的调用索引。


3.在做非等值查询的时候,需保证等值列在前,非等值列在后。从实验结果二和三的差别就可以看出来,这就要求我们在创建组合索引时关注列的顺序,需要按照实际查询的需求来建立索引。


4.查询时只能利用一个非等值字段,这就解释了为什么实验四中并没有调用到组合索引。







客户资料:
年缴保费:
客户需求:


【干货分享】组合索引在DM7中的使用情况


在实际工作中,为了提高表查询的效率,我们会在表上创建各种索引。但是,有时候我们虽然创建了组合索引,查询效率并没有提高,这是为什么呢?本文将带大家一探究竟。

 

实验背景:


1、确认数据库版本:


DM Database Server x64V7.1.6.46-Build(2018.02.08-89107)ENT


2、创建测试用表并录入测试数据


表结构如下


【干货分享】组合索引在DM7中的使用情况


并录入10000条测试数据,具体步骤可参考上一期干货分享DM7中产生随机数据的方法。


3、创建索引


【干货分享】组合索引在DM7中的使用情况


这个组合索引中,列的顺序为MATH,ENGLISH,SCIENCE

 

实验考虑以下四种情况:


一. 3个字段都是等值查询,例如


【干货分享】组合索引在DM7中的使用情况


查询执行计划如下:


【干货分享】组合索引在DM7中的使用情况


这里是直接从索引中调取的结果


二. MATH不等值,ENGLISH和SCIENCE两列等值,例如


【干货分享】组合索引在DM7中的使用情况


通过执行计划可以看出并没有调用到索引。


【干货分享】组合索引在DM7中的使用情况


三. MATH和ENGLISH等值,第三列SCIENCE不等值,例如


【干货分享】组合索引在DM7中的使用情况


执行计划有调用到index_test索引查询出MATH=60 and ENGLISH=60的所有值,再从里面选择出science<>60的值


【干货分享】组合索引在DM7中的使用情况


四、MATH等值,后面两列不等值,例如


\

【干货分享】组合索引在DM7中的使用情况

【干货分享】组合索引在DM7中的使用情况


从执行计划来看也是没有利用到索引的


通过这几种情况,我们可以得到组合索引的几个特点:


1.如果查询中经常会利用多个字段进行组合定位,我们可以在这几个字段上建立组合索引。


2.在做等值查询的时候,组合索引中各个列的顺序是无关紧要的,这个从实验结果一可以看出,列的顺序变化之后还能是正常的调用索引。


3.在做非等值查询的时候,需保证等值列在前,非等值列在后。从实验结果二和三的差别就可以看出来,这就要求我们在创建组合索引时关注列的顺序,需要按照实际查询的需求来建立索引。


4.查询时只能利用一个非等值字段,这就解释了为什么实验四中并没有调用到组合索引。







相关案例
2019 - 01 - 25
点击次数: 10000
在达梦数据库的日常使用中,大家可能会碰到这样一种情况。主机编码方式非unicode,数据库以unicode编码建库,此时如果生成以中文命名的备份集。如:当使用该备份集进行还原等操作时,因编码不一致,导致备份集解析后从本地读取备份片文件时,找不到而报错。遇到这种情况的时候,小伙伴们也不要慌张,接下来我们会给出几个可行的解决方案。 解决方案:以上述备份集为例,介绍解决步骤。1、 &...
2019 - 01 - 11
点击次数: 10000
在前两期的分享中,我们介绍了在做单表及多表查询时用到的SQL操作符。本次,我们就来讲一讲过滤和分组排序时用到的操作符。 过滤条件:SLCT这类操作符比较简单,是对结果集进行过滤,需要注意的是操作符的描述信息,从描述信息中我们可以看到对于下层操作有哪些可用的过滤条件,这些条件往往是优化方向的来源。需要关注的是SLCT 的描述部分  (exp_cast(T2.ID) 5 AND ...
2019 - 01 - 04
点击次数: 10001
在上期的分享《达梦SQL优化——基础篇》中,我们学习了做单表查询时常见的SQL操作符,这次我们就来看看多表查询中的操作符。01多表连接操作符在做多表连接查询时,我们可能会碰到的SQL操作符有以下几种类别:NEST LOOP   嵌套循环连接HASH JOIN    哈希连接INDEX JOIN   索引连接MERGE JOIN&...
2018 - 12 - 29
点击次数: 10000
在数据库的使用中,书写正确的SQL语句只是完成了万里长征的第一步。事实上,在DBA的日常的工作中,SQL优化占据了很大的一部分的内容,本文就将给大家介绍一些SQL优化有关的基础知识。 1.基本概念在理解如何优化SQL语句之前,我们首先要了解几个基本概念1.1执行计划执行计划是SQL语句的执行方式,由查询优化器为语句设计的执行方式,交给执行器去执行。在SQL命令行使用EXPLAIN可以打印...
官网微信公众号官方微信公众号
官方技术咨询群官方技术咨询群
支持:dmtech@dameng.com
地址:中国·武汉·东湖新技术开发区高新大道999号未来科技大厦C3栋16-19层
咨询热线:400 991 6599
传真:+86 0755-2788 8009
友情链接:
鄂Copyright ©2017 - 2018 武汉达梦数据库有限公司
犀牛云提供企业云服务
X
3

SKYPE 设置

4

阿里旺旺设置

等待加载动态数据...

等待加载动态数据...

5

电话号码管理

6

二维码管理

等待加载动态数据...

等待加载动态数据...

展开