# 达梦sql查询 Sql 优化

达梦sql查询 Sql 优化

文章目录

  • 达梦sql查询 Sql 优化
    • 注意点
    • 测试数据
    • 单表查询 Sort 语句优化
      • 优化过程
    • 多表关联SORT 优化
    • 函数索引的使用

注意点

  • 关于优化过程中工具的选用,推荐使用自带的DM Manage,其它工具在查看执行计划等时候不明确
  • 在执行计划中命中顺序是左右边最上边优先执行,同一级上面的先执行

在这里插入图片描述

测试数据

  • 本次测试的DM8数据库版本号如下:SELECT * FROM v$version
    在这里插入图片描述

  • 主表

-- SYSDBA.TABLE_CLASS_TEST definitionCREATE TABLE SYSDBA.TABLE_CLASS_TEST (ID VARCHAR(100) NOT NULL,NAME VARCHAR(100) NULL,CODE VARCHAR(100) NULL,TITLE VARCHAR(100) NULL,CREATETIME TIMESTAMP NULL,COLUMN1 VARCHAR(100) NULL,COLUMN2 INTEGER NULL,COLUMN3 VARCHAR(100) NULL,COLUMN4 VARCHAR(300) NULL,COLUMN5 VARCHAR(400) NULL,COLUMN6 VARCHAR(100) NULL,COLUMN7 VARCHAR(10) NULL,CONSTRAINT TAVBLE_CLASS_TEST_PK PRIMARY KEY (ID)
);
CREATE UNIQUE INDEX INDEX33557764 ON SYSDBA.TABLE_CLASS_TEST (ID);
  • 子表
CREATE TABLE "SYSDBA"."TABLE_CLASS_TEST_CHILD"
(
"ID" VARCHAR(100) NOT NULL,
"NAME" VARCHAR(100),
"CODE" VARCHAR(100),
"TITLE" VARCHAR(100),
"CREATETIME" TIMESTAMP(6),
"COLUMN1" VARCHAR(100),
"COLUMN2" INTEGER,
"COLUMN3" VARCHAR(100),
"COLUMN4" VARCHAR(300),
CONSTRAINT "TABLE_CLASS_TEST_CHILD" NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
  • 使用的sql工具达梦自带的客户端工具 DM MANAGER

单表查询 Sort 语句优化

  • 对于单表查询含有order bySQL,去掉SORT比较简单,创建对应的索引即可。

优化过程

  • 执行sql执行计划
explain
select * from table_class_test where code ='3' order by createtime desc,code desc
  • CSCN2

在这里插入图片描述

  • 给排序字段创建联合排序索引
create index "SYSDBA"."TABLE_CLASS_TEST_ORDER_BY_INDEX1" on "SYSDBA"."TABLE_CLASS_TEST"("CODE" desc,"CREATETIME" desc);
  • 更新表索引信息
sp_index_stat_init('SYSDBA','TABLE_CLASS_TEST_ORDER_BY_INDEX1');
  • 再次执行sql计划如下,命中排序索引,Sort部分被优化了

在这里插入图片描述

多表关联SORT 优化

  • join部分列没有索引全表扫描了
explain
select x.*,y.* from table_class_test x join table_class_test_child y on x.code=y.code
where x.code='3'
order by x.code desc

在这里插入图片描述

  • 给子表code俩个表关联的列增加索引
create index "SYSDBA"."table_class_test_child_code_index1" 
on "SYSDBA"."TABLE_CLASS_TEST_CHILD"("CODE");sp_index_stat_init('SYSDBA','table_class_test_child_code_index1');

在这里插入图片描述

  • 都命中了索引

函数索引的使用

  • 达梦可以创建函数索引,在某些业务中可以考虑使用函数索引例如下面的语句
select * from table_class_test where COLUMN3='3'select * from table_class_test where IFNULL(COLUMN3,'-')='3'
  • 创建函数索引
CREATE  INDEX "column3_ifnull_index" ON "SYSDBA"."TABLE_CLASS_TEST"("IFNULL"(COLUMN3, '-')) STORAGE(ON "MAIN", CLUSTERBTR) ;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/619254.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring+SpringMVC的知识总结

一:技术体系架构二:SpringFramework介绍三:Spring loC容器和核心概念3.1 组件和组件管理的概念3.1.1什么是组件:3.1.2:我们的期待3.1.3Spring充当组件管理角色(IOC)3.1.4 Spring优势3.2 Spring Ioc容器和容器实现3.2.1普通和复杂容器3.2.2 SpringIOC的容器介绍3.2.3 Spring IOC…

问题整理【2024-04-08】

一、关于MYSQL死锁问题 1.1 源由 一次上线过程中,遇到了MySQL死锁的问题…… 1.2 分析 1.2.1 前置知识 ​ 首先要知道,MySQL是一个多线程的数据库管理系统,查询是通常并发执行的,可以同时处理多个查询请求,并且My…

一.NODE MCU(ESP8285,ESP8286)开发环境搭建

一.序言: 1.esp8285长什么样? 2.esp8285是什么,能做什么? 通过上面图片,看到上面的芯片,是带有多个阵脚的单片机。实际上,看着该芯片很小,但是却具有完整的wifi无线蓝牙功能,它本身可以运行一个极简的linux小系统,并且该极简的小linux系统具备无线蓝牙功能。。它同…

云服务器web环境之mariadb

1.安装mariadb服务 yum install mariadb-server 启动mariadb服务 systemctl start mariadb.service 输入mysql就能使用数据库了。 2.服务相关操作 systemctl stop mariadb.service systemctl restart mariadb.service 2.配置开机自启动 systemctl enable mariadb.serv…

D2-走迷宫

D1-走迷宫 题目描述思路分析代码如下 题目描述 思路分析 维护一个队列&#xff0c;每次从队列中取出一个元素&#xff0c;然后从这个元素的四个方向进行遍历、判断是否出界和这个位置是否能走&#xff0c;使用bfs遍历一遍后得出的值就是最短路径 代码如下 #include<bits/…

Eigen库从入门到放弃(3. The Matrix class)

在eigen中&#xff0c;所有的矩阵和向量都是Matrix的模板类对象&#xff0c;Matrix类接收6个模板参数&#xff0c;有三个是有默认值的&#xff0c;另外三个需要强制我们手动设置&#xff0c;我们先研究一下它的这三个参数&#xff0c;三个强制设置的参数分别是&#xff1a; Ma…

MATLAB GUI图形化界面设计计算器

MATLAB GUI界面设计教程可以帮助用户创建交互式的图形用户界面&#xff0c;以简化与MATLAB程序的交互过程。以下是一个简化的教程&#xff0c;指导你如何进行MATLAB GUI界面设计&#xff1a; 1. 启动GUIDE或App Designer GUIDE&#xff1a;在MATLAB命令窗口中输入guide命令&a…

基于java的社区生活超市管理系统

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclip…

STM32之DHT11温湿度传感器

目录 一 DHT11温湿度传感器简介 1.1 传感器特点 1.2 传感器特性 1.3 传感器引脚说明 二 测量原理及方法 2.1 典型应用电路 2.2 单线制串行简介 2.2.1 串行接口 (单线双向) 2.2.2 数据示例 2.3 通信时序 三 单片机简介 3.1 STM32F103C8T6最小系统板 四 接线说明 …

计算机网络 实验指导 实验17

实验17 配置无线网络实验 1.实验拓扑图 Table PC0 和 Table PC1 最开始可能还会连Access Point0&#xff0c;无影响后面会改 名称接口IP地址网关地址Router0fa0/0210.10.10.1fa0/1220.10.10.2Tablet PC0210.10.10.11Tablet PC1210.10.10.12Wireless互联网220.10.10.2LAN192.16…

YOLOv9/YOLOv8算法改进【NO.117】 使用Wasserstein Distance Loss改进小目标的检测效果

前 言 YOLO算法改进系列出到这&#xff0c;很多朋友问改进如何选择是最佳的&#xff0c;下面我就根据个人多年的写作发文章以及指导发文章的经验来看&#xff0c;按照优先顺序进行排序讲解YOLO算法改进方法的顺序选择。具体有需求的同学可以私信我沟通&#xff1a; 首推…

Blender表面细分的操作

在使用Blender的过程中,刚开始创建的模型,都会比较少面,这样操作起来比较流畅,减少电脑的计算量,当设计快要完成时,就会增加表面细分,这样更加圆滑,看起来更加顺眼。 比如创建一个猴头,它会默认显示如下: 从上图可以看到,有一些表面会比较大,棱角很多。 这时候你…