您如何解释查询的解释计划?

2024-03-28

当尝试了解 SQL 语句如何执行时,有时建议查看解释计划。在解释(理解)解释计划时应该经历什么过程?什么应该脱颖而出,“哦,这工作得很好?”与“哦,不,那是不对的”。


每当我看到关于全表扫描不好而索引访问很好的评论时,我都会感到不寒而栗。全表扫描、索引范围扫描、快速全索引扫描、嵌套循环、合并联接、散列联接等只是分析人员必须理解的访问机制,并结合数据库结构和查询目的的知识。以便得出任何有意义的结论。

完全扫描只是读取数据段(表或表(子)分区)的大部分块的最有效方法,虽然它通常可以指示性能问题,但这仅在上下文中它是否是实现查询目标的有效机制。作为一名数据仓库和 BI 人员,我的第一个性能警告标志是基于索引的访问方法和嵌套循环。

因此,对于如何阅读解释计划的机制,Oracle 文档是一个很好的指南:http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/ex_plan.htm#PFGRF009 http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/ex_plan.htm#PFGRF009

还请仔细阅读《性能调优指南》。

还可以在谷歌上搜索“基数反馈”,这是一种可以使用解释计划将查询中各个阶段的基数估计与执行过程中经历的实际基数进行比较的技术。我相信沃尔夫冈·百年灵(Wolfgang Breitling)是该方法的作者。

因此,底线是:了解访问机制。了解数据库。理解查询的意图。避免经验法则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您如何解释查询的解释计划? 的相关文章

  • 翻译数据库内文本的最佳方法是什么

    我们这里有问题 我们需要将网站翻译成多种语言 我们已经使用 gettext 来翻译静态内容 但我们必须将一些文本内容翻译成多种语言 ui不是问题 我们找到了两种翻译文本的方法 1 在我们的文本输入中使用 JSON 为什么这个解决方案不好 每
  • 链表、数组和硬件内存缓存

    虽然之前有人问过关于链表与数组的问题 但答案大多归结为我们大多数人在某些时候可能已经学到的东西 列表擅长插入和删除 数组擅长随机访问 现在 像 Bjarne Stroustrup 这样受人尊敬的人已经argued https www you
  • SQL 中的模糊分组

    我需要修改 SQL 表以对稍微不匹配的名称进行分组 并为组中的所有元素分配标准化名称 例如 如果初始表如下所示 Name Jon Q John Q Jonn Q Mary W Marie W Matt H 我想创建一个新表或向现有表添加一个
  • 您能否推荐一个 JQuery 插件来组成一组可映射到 SQL 查询的条件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我发现了http redquerybuilder appspot com http redquerybu
  • 如何提高非持久 CGI 进程中的 Moose 性能?

    Moose http search cpan org dist Moose 是一个很棒的对象框架 问题在于 连同它的依赖项一起 它是very大的 我们的分析表明 在我们的平台上 仅加载 Moose 就会在非持久性 CGI 应用程序脚本上产生
  • 从文件中读取第n行的快速方法

    介绍 我有一个名为的 C 进程MyProcess我称之为nbLines时间 地点nbLines是一个名为的大文件的行数InputDataFile txt在其中可以找到输入数据 例如调用 MyProcess InputDataFile txt
  • 添加新列后如何使用 activeandroid 更新表

    感谢您的阅读和帮助 我正在使用 ActiveAndroid 3 0 Android 2 2 在我的应用程序中 我有一个名为 用户 的模型 最初 我只使用 id 名称 密码 列 属性创建模型 我在模拟器上运行该应用程序 并且它有效 Table
  • 缓慢的 data.frame 行分配

    我正在使用 RMongoDB 需要用查询的值填充空的 data frame 结果相当长 大约有 200 万个文档 行 当我进行性能测试时 我发现将值写入行的时间随着数据帧的维度的增加而增加 也许这是一个众所周知的问题 而我是最后一个注意到它
  • 类似代码之间 numpy 的巨大速度差异

    为什么以下L2范数计算之间的速度差异如此之大 a np arange 1200 0 reshape 1 3 timeit np sqrt a a sum axis 1 100000 loops best of 3 12 s per loop
  • 将我的数据库类与项目中的其他类一起使用

    我有一个自己编写的自定义数据库类 还有一个用户类和一个站点类 MySQL 类有这样的方法 connect query clean fetch 用户等级 register login logout resetPass 站点类别 updateT
  • BigQuery 中的 EXP() 返回浮点错误

    我有以下查询 SELECT EXP col FROM project dataset tablename Where col is FLOAT 但是 我收到此错误 Error Floating point error in function
  • 如何清除 SQL Server 2005/2008 中的查询执行统计信息

    基于使用从这篇文章中获得的这段非常有用的 SQL 来获取查询执行统计信息最常执行的存储过程 代码日志 https stackoverflow com questions 1942726 most executed stored proced
  • 输出参数有什么问题?

    在 SQL 和 C 中 我从来都不太喜欢输出参数 我也从未在 VB6 中通过 ByRef 传递参数 依靠副作用来完成某件事只会让我烦恼 我知道它们是一种解决无法从函数返回多个结果的方法 但 SQL 中的行集或 C 和 VB 中的复杂数据类型
  • ORA 00904 错误:无效的标识符

    我已经在虚拟 XP 中安装了 Oracle 10g 并使用以下命令创建了一个表 create table reg1 fname varchar2 30 lname varchar2 30 addr varchar2 30 mail varc
  • mysql非空字段计数

    我想计算 mysql 中特定字段集有多少字段为空 我找到了一些示例 但它们都遍历整个表 基本上我有8个字段 listing photo 1 到listing photo 8 我想知道其中有多少个被填充 I tried result mysq
  • 提升 ggplot2 性能

    The ggplot2软件包无疑是我使用过的最好的绘图系统 只是对于较大的数据集 约 50k 点 来说性能并不是很好 我正在考虑通过 Shiny 提供网络分析 使用ggplot2作为绘图后端 但我对其性能并不满意 尤其是与基础图形相比 我的
  • 插入触发器是否需要提交语句

    这是实际场景的简化 在哪里可以看到表 B 上缺失的记录 假设有两个数据库表 A B 表 A 上有一个插入触发器 它对表 B 进行插入 但它没有 COMMIT 如果我们通过 JDBC 连接器打开数据库连接 并对表 A 进行插入 并提交 触发器
  • Athena date_parse 用于具有可选毫秒字段的日期

    我在 S3 中有日期 使用它创建了 Athena 表 我在 S3 中有一些 json 格式的日期条目 在运行查询时 Athena 不接受这些条目作为日期或时间戳 使用 AWS Athena 它使用 Prestodb 作为查询引擎 示例 js
  • 将上一行值减去当前行

    我有下表 id value acc no 1 12 1 2 14 1 3 15 1 4 10 2 5 16 2 6 19 1 7 7 3 8 24 2 预期产出 id value acc no result 1 12 1 12 curren
  • 插入到表中并在 SQL 中拆分字符串

    我想将分割字符串插入到我的表中 如您所见 create table Organization organizationId bigint provienceId bigint CityId bigint TownId bigint Inse

随机推荐

  • CCAvenue:“解密应用程序请求时出错!”

    我正在尝试将 CCAvenue 支付网关集成到我用 swift 4 开发的 iOS 应用程序中 我正进入 状态 错误 解密应用程序请求时出现问题 我已检查以下网址给出的答案 https stackoverflow com a 3732712
  • codegen 和标量结构参数

    Codegen 命令如下 codegen config dll ep1 args single 0 ep2 args 0 0 对于这样的函数来说很容易 function y ep1 u codegen y u function y ep2
  • Python基线校正库

    我目前正在处理一些拉曼光谱数据 并且正在尝试纠正由花期偏差引起的数据 看看下面的图表 我已经非常接近实现我想要的了 正如您所看到的 我试图在所有数据中拟合多项式 而我实际上应该在局部最小值处拟合多项式 理想情况下 我想要一个多项式拟合 当从
  • 如何确定 rspec 控制器测试的主题?

    所以除了好奇之外 我没有什么充分的理由需要知道这一点 最好的理由 但我不确定这里发生了什么 背景 我正在研究 RSpec 书并更新示例 第 24 章 Rails 控制器有一个消息控制器的测试 spec controllers message
  • .NET 结构中的成员相等测试使用什么算法?

    NET 结构中的成员相等测试使用什么算法 我想知道这一点 以便我可以将其用作我自己的算法的基础 我正在尝试为任意对象 在 C 中 编写递归成员相等测试 以测试 DTO 的逻辑相等性 如果 DTO 是结构 则这会容易得多 因为 ValueTy
  • 如何在 blazor wasm 中创建可供下载的 pdf

    在 blazor wasm 中 我想创建一个 pdf 并使其可下载 我测试过pdfflow https www pdfflow io 但只能使其在控制台应用程序中运行 有几种商业解决方案 devexpress syncfusion 但它们确
  • 如何更改 core-image-minimal yocto 中的 init 系统

    我想根据以下内容创建一个新目标core image minimal我想更改 init 系统systemd over SysV init 我希望我的更改是永久性的 不基于 local conf 我怎样才能做到这一点 Edit 正如安德斯在评论
  • 当目标位于另一个 AppDomain 中时,非托管到托管的回调要慢得多

    我使用委托从非托管代码调用托管代码 当我调用默认 AppDomain 中的托管代码时 我测量到每次调用的平均时间为 5 4 纳秒 当我调用第二个 AppDomain 时 我测量到每次调用需要 194 纳秒 默认VS2017 x86发布配置
  • 无法解析库模块中的 Kotlin Android 扩展布局

    我有我的buyer seller模块和一个common模块 两者都使用的布局很少buyer and seller模块被放置在common module common gt layout toolbar xml buyer gt activi
  • 实体框架插入具有相关对象的对象

    我是实体框架的新手 我需要插入一个对象Comment具有相关的 FK 对象User进入数据库 public Class Comment public int CommentID get set public string CommentCo
  • Erlang 中事件流(又名 CEP)的实时关联/分析有什么框架吗?

    想要分析具有某些特征 例如公共来源 的事件流 并在给定的时间窗口内 最终将这些多个事件关联起来并从中得出一些推论 最后启动一些操作 我对复杂事件处理 CEP 的有限了解告诉我 它是此类事情的理想选择 然而 在我迄今为止的研究中 我发现人们将
  • FB.event.subscribe comment.create 无需用户操作即可执行操作[重复]

    这个问题在这里已经有答案了 好的 这就是我的问题 我试图在 Facebook 评论中发表评论后向个别帖子的作者发送一封电子邮件 以通知作者已发表评论 评论框位于 K2 项目中 在 Joomla 中 FB event subscribe co
  • stackwalker加载所有符号文件,但仍然没有符号化任何东西

    我可能做错了什么 但我无法弄清楚这一点 我有一个在 Windows 上生成的简单崩溃小型转储 如果我在 Visual Studio 中打开转储 它会毫无问题地加载并显示崩溃线 但我无法让它在 minidump stackwalker 中进行
  • Java 是否保证当前同步的对象不会被垃圾回收?

    当线程持有其监视器时 是否可以保证对象不会被垃圾收集 e g class x private WeakReference r Object getMonitorObject Object o new Object r new WeakRef
  • 如何通过添加像素跟踪来跟踪各个收件人的阅读状态

    我正在构建一个电子邮件应用程序 其功能是在发送电子邮件后查看已读收件人 例如 如果我向 P1 发送了一封电子邮件并抄送 P2 和 P3 那么当 P1 打开电子邮件时 我作为发件人应该能够看到 P1 阅读了他们的电子邮件 为了实现这一目标 我
  • Firebase DB HTTP API 身份验证:何时以及如何刷新 JWT 令牌?

    我正在尝试使用 HTTP API 将 Python Web 应用程序写入 Firebase DB 我正在使用 Google I O 2016 上推出的新版本 Firebase 到目前为止 我的理解是 我想要完成的特定类型的写入是通过对此类型
  • MySQL字段类型如何转换?

    我已经遇到过转换函数 据我了解 基本语法是 select convert columnName targetFieldType as newColumnName from table 运行此命令不会给我任何错误 但是当我检查数据类型时它们没
  • WebGL 渲染抗锯齿

    我正在使用 webgl 和 javascript 有没有一种方法可以在不使用抗锯齿的情况下进行渲染 我需要每个像素都是纯色的 我当前的片段着色器非常简单 precision mediump float varying highp vec3
  • flutter 中出现无效的互联网地址错误

    我将图像上传到 Firebase Storage 然后获取图像的 Url 到 Firebase Storage 创建的图像链接 然后我将图像的 url 保存在 Firestore Documents 中 如果消息有图像并且当我想显示消息时
  • 您如何解释查询的解释计划?

    当尝试了解 SQL 语句如何执行时 有时建议查看解释计划 在解释 理解 解释计划时应该经历什么过程 什么应该脱颖而出 哦 这工作得很好 与 哦 不 那是不对的 每当我看到关于全表扫描不好而索引访问很好的评论时 我都会感到不寒而栗 全表扫描