达梦中的连接查询方式
达梦中的连接查询方式,全部参照官方文档。
- 查询语句中FROM子句包含多个表时,称为连接查询。生成连接查询的执行计划,需要考虑三方面因素:访问路径、连接方式、连接顺序。
- 访问路径指对于每张表采用何种方式来获取数据,如全表扫描、索引扫描等。
- 连接方式是指确定两张表之间采用哪种连接方式,如哈希连接、嵌套连接、归并连接、外连接。等值连接条件一般会选择哈希连接;非等值连接条件会选择嵌套连接;连接列均为索引列时会采用归并连接。
- 嵌套连接(NEST LOOP JOIN):两张表进行非等值连接时会选择嵌套连接。相当于两张表进行笛卡尔积操作,此时优化器会选择一张代价较小的表作为外表(驱动表),另一张表作为内表,外表的每一条记录与内表进行一次连接操作;
- 哈希连接(HASH JOIN):两张表进行等值连接时会选择哈希连接。以一张表的连接列作为哈希键,构造哈希表,另一张表的连接列进行哈希探测,找到满足条件的记录。由于哈希命中率高,因此在大数据量的情况下,哈希连接的效率较高。哈希连接的代价是建立哈希表和哈希探测的代价;
- 归并连接:两张表的连接列均为索引列时,可以按照索引顺序进行归并,一趟归并就可以找出满足条件的记录。若查询列也属于索引列的子集,则归并连接只需扫描索引,会有更好的性能表现。在两表连接条件不是等值(如≥、≤、>、<)情况下时,归并排序连接很有用;
- 外连接:外连接分为左外连接、右外连接、全外连接。作为外表的数据会全部返回,若没有与外表匹配的记录,则填充NULL值。
- 子查询会转换成半连接,共有四种半连接方式:哈希半连接、索引半连接、归并半连接、嵌套半连接。等值连接会选择哈希/索引/归并半连接,非等值连接会选择嵌套半连接。
- 哈希半连接:以外表的连接列为KEY构造哈希表,内表的连接列进行探测来查找满足连接条件的记录;
- 索引半连接:若子查询的连接列为索引前导列,则可采用索引半连接。处理过程为外表的数据对子查询使用索引查找,返回满足条件的记录;
- 归并半连接:若相关子查询的连接条件均为索引列,则可采用索引半连接,按照索引顺序,对外表、内表进行同步扫描,返回满足条件的记录;
- 嵌套半连接:若连接条件为非等值,则可转换为嵌套半连接,处理过程为外表的每条记录去遍历内表,返回满足条件的记录。
- 当超过两张表进行连接时,就需要考虑表之间的连接顺序,不合适的连接顺序对执行效率有较大影响。一般原则是,经过连接可以产生较小结果集的表优先处理。
达梦中的连接查询方式相关推荐
- MySql 内连接,外连接查询方式区别
MySql 内连接,外连接查询方式 CREATE TABLE `question_test` (`q_id` int(11) DEFAULT NULL,`q_name` varchar(10) DEF ...
- Oracle 中的Userenv() 达梦中如何处理?
ORACLE USERENV函数返回关于当前会话的信息.此信息可以用于编写一个应用程序特定的审计跟踪表或确定特定于语言的角色目前使用的会话. 参数 功能 CLINET_INFO 返回最高可达64个字节 ...
- Hibernate中的QBC查询方式详解
Hibernate中的QBC查询方式详解 QBC:Query By Criteria,条件查询. 是一种更加面向对象化的查询的方式. 1.QBC简单查询 测试代码: package com.pipi. ...
- MySQL UUID函数在达梦中的移植方法
MySQL 中有个UUID的函数,达梦中没有,达梦有guid和newid可以对应 如果不想修改代码,可以自定义一个UUID的函数来替代 create OR REPLACE FUNCTION uuid ...
- 达梦数据库-8 错误代码查询
达梦数据库中有一个视图,可以查看目前达梦数据库中所有的报错信息 select * from v$err_info; 可以看到达梦报错代码是从100开始的,截止到目前一共有2799个. CODE ERR ...
- oracle数据库dblink创建语句_「运维实验」——达梦数据库DBlink连接Oracle配置
经过昨天达梦数据库间DBlink配置(具体操作可回看上一篇文章),今天做延伸实验. 实验环境说明 Oracle数据库1:192.168.80.40 ora11g RHEL 6.5 64位 达梦数据库1 ...
- php7 测试数据库_达梦数据库PHP连接测试
完整实验步骤: 1.apache安装 2.php安装 3.连接达梦数据库 1.源码安装apache apache的源码安装包: httpd-2.4.43.tar.gz 安装apache源码包需要先安装 ...
- 达梦数据源配置_达梦数据库的连接配置
1.建立基本的JDBC连接 JDBC(Java Database Connectivity)是Java应用程序与数据库的接口规范,旨在让各数据库开发商为Java程序员提供标准的数据库应用程序编程接口( ...
- 达梦数据库如何将查询回来的字段名变成小写
达梦数据库默认是对大小写敏感,当然这个值是可以设置的 在一般的情况下,字段内容是应用自行管理的,应用自己也好控制,但是对于字段名,作为开发,可能非常头疼.这里有两个基本知识,我们一定需要知道,对于数据 ...
最新文章
- 2021-03-15 深入理解SLAM技术【1】 基础知识
- 退役-兵巨臂锻炼计划
- sparkStreaming+kafka SparkException: java.nio.channels.ClosedChannelException异常报错
- 支持多达70余种嵌入式核心的嵌入式仿真软件SkyEye
- 深度学习 《RNN模型》
- python基础-函数之装饰器、迭代器与生成器
- MessageBox和AfxMessageBox函数的区别
- 抽取、转换和装载介绍(五)抽取数据
- Spring入门看这一篇就够了
- 欧瑞变频器800参数设置_欧瑞变频器E800说明书(中文)2014080504A(2014.08.05).pdf
- 山西台达plc可编程控制器_PLC(可编程控制器)的点动控制原理
- 卜算子.咏梅 陆游
- linux 用户和组详解
- 屏蔽网通域名纠错系统
- iOS内存管理 —— 自动释放池和runloop
- 经典培训小游戏(一)
- amd服务器如何修改睿频,amd自动睿频怎么开 amd开启睿频教程
- 借助OSS搭建在线教育视频课程分享网站-阿里云的课程体验和记录
- 【财经期刊FM-Radio|2021年04月14日】
- 16岁学生 自学JAV日常记录(学习日记)