概述

处理一个给定的查询,尤其是复杂查询,通常会有许多种策略,查询优化就是从这许多策略中找出最有效的查询执行计划的处理过程。

查询执行计划的步骤

产生逻辑上与给定表达式等价的表达式;
估计每个执行计划的代价;
对所产生的表达式以不同方式做注释,产生不同的查询计划。

关系表达式的转换

如果两个关系代数表达式在所有有效数据库实例中都会产生相同的元组集,则我们称他们是等价的。

表达式结果集统计大小的估计

前提信息 :关系r的元组数、磁盘块数、每个元组的字节数、关系r的块因子(一个磁盘块能容纳的关系r中元组的个数。
选择运算结果集大小的估计
选择运算结果集大小的估计
其他运算的结果集大小的统计:投影、聚集、集合运算、外连接等。

执行计划的选择

基于代价的优化:通过使用等价规则从给定的查询语句产生一系列查询执行计划,并选择代价最小的一个。
连接顺序优化:基于等价转换,最常见的是基于动态规划的算 大专栏  查询优化基础知识 - chendh blog法。目前的研究方向之一。
启发式优化:尽早执行选择运算;尽早执行投影运算;缓存经常使用的查询计划。
嵌套子查询的优化:尽可能转换成连接的形式。

物化视图

概念:物化视图是一个其内容已计算并存储的视图。
视图维护:保持物化视图与原始数据的同步更新。
维护方法:增量的视图维护;立即的视图维护;延迟的视图维护。


查询优化基础知识 - chendh blog的更多相关文章

  1. APK反编译之一:基础知识—APK、Dalvik字节码和smali文件

    refs: APK反编译之一:基础知识http://blog.csdn.net/lpohvbe/article/details/7981386 APK反编译之二:工具介绍http://blog.csd ...

  2. LoRa基础知识

    摘自:LoRaWAN介绍 - LoRa从业者读这篇就够了 https://blog.csdn.net/iotisan/article/details/69939241    LoRa网络结构      ...

  3. Oracle数据库基础知识

    oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...

  4. MySQL 基础知识梳理

    MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...

  5. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  6. RabbitMQ基础知识

    RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...

  7. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  8. TCP/IP协议(一)网络基础知识

    参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...

  9. Linux基础知识整理

    一.基础知识 1.Linux简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件 ...

随机推荐

  1. Excel文件比较工具的使用

    本工具用于比较两个文件夹中对应Excel工作簿中单元格数据是否不同. 如果有内容不同的单元格,就在结果报告中表示出来. 点击如下链接,下载. Excel文件比较工具.rar 解压缩后,看到1个exe文 ...

  2. 2019-2020-1 20199324《Linux内核原理与分析》第九周作业

    第八章 进程的切换和系统的一般执行过程 1.进程调度的时机 硬中断和软中断 中断:在本质上都是软件或者硬件发生了某种情形而通知处理器的行为,处理器进而停止正在运行的指令流(当前进程),对这些通知做出相 ...

  3. 吴裕雄--天生自然 JAVA开发学习:抽象类

    public abstract class Employee { private String name; private String address; private int number; pu ...

  4. Linux 创建静态库.a

    gcc -c 只编译不连接 -o *.o(生成.o文件) ar crv  name.a   *.o *.o  (ar 命令把 .o文件打包成  name.a 静态库) 测试 name.a -L 紧跟链 ...

  5. HDU-4578 Transformation(线段树的多种区间操作)

    http://acm.hdu.edu.cn/showproblem.php?pid=4578 Time Limit: 15000/8000 MS (Java/Others)    Memory Lim ...

  6. D. Array Splitting(后缀数组)

    You are given an array

  7. layui表格自动对齐

    正常情况table应该是这样展示的 但是却展示成了这样 格子没对齐,找了半天原因发现是在table.render中的cols参数多了一个"," 不细心一点真看不出来 正常结构应是 ...

  8. python中使用自定义类实例作为字典的key

    python中dict类型的key值要求是不可变类型,通常来说,我们一般采用int或者str类型来作为字典的key,但是在某些场景中,会造成一定的麻烦. 如我们有一个处理http Request的规则 ...

  9. imageMso7345.rar

    本工具用于Office开发中的customUI设计,查询内置图标的工具. 解压后,有2个Excel文件. 第一个文件的动态图: 第2个文件也可以查询图标: 下载地址: imageMso7345.rar

  10. [LC] 389. Find the Difference

    Given two strings s and t which consist of only lowercase letters. String t is generated by random s ...