Dav_笔记11:SQL Tuning Overview-sql调优 之 4
开发高效的SQL语句
本节介绍了提高SQL语句效率的方法:
■验证优化程序统计信息
■审查执行计划
■重构SQL语句
■重组索引
■修改或禁用触发器和约束
■重组数据
■随着时间的推移维护执行计划
■尽可能少地访问数据
验证优化程序统计信息
查询优化器在确定最佳执行计划时使用在表和索引上收集的统计信息。如果尚未收集这些统计信息,或者统计信息不再代表数据库中存储的数据,则优化程序没有足够的信息来生成最佳计划。
要检查的事项:
■如果收集数据库中某些表的统计信息,则最好收集所有表的统计信息。如果您的应用程序包含执行连接的SQL语句,则尤其如此。
■如果数据字典中的优化程序统计信息不再代表表和索引中的数据,则收集新的统计信息。检查字典统计信息是否过时的一种方法是将表的实际基数(行计数)与DBA_TABLES.NUM_ROWS的值进行比较。此外,如果谓词列上存在严重的数据偏差,请考虑使用直方图。
审查执行计划
在OLTP环境中调优(或写入)SQL语句时,目标是从具有最具选择性的过滤器的表中驱动。这意味着传递到下一步的行数较少。如果下一步是连接,则表示连接的行数较少。检查访问路径是否最佳。
检查优化程序执行计划时,请查找以下内容:
■驱动表具有最佳过滤器。
■每个步骤中的连接顺序将最少的行数返回到下一步(即,连接顺序应尽可能反映到最佳尚未使用的过滤器)。
■join方法适用于返回的行数。例如,当语句返回许多行时,通过索引的嵌套循环连接可能不是最佳的。
■数据库有效地使用视图。查看SELECT列表以查看是否需要访问视图。
■有任何无意义的笛卡尔结果(即使是小表)。
注意:
本节中描述的准则面向生成频繁执行的SQL。这里不鼓励使用的大多数技术可以合理地用于临时语句或在性能不重要的情况下不经常运行的应用程序中。
■有效访问每个表:
考虑SQL语句中的谓词和表中的行数。 查找可疑活动,例如对具有大量行的表进行全表扫描,这些行在where子句中具有谓词。 确定索引未用于此类选择性谓词的原因。
全表扫描并不意味着效率低下。 在小型表上执行全表扫描或执行全表扫描以针对返回的行数利用更好的连接方法(例如,hash_join)可能更有效。
如果这些条件中的任何一个不是最佳的,那么考虑重构SQL语句或表上可用的索引。
重构SQL语句
通常,重写低效的SQL语句比修改它更容易。 如果您了解给定语句的用途,那么您可以快速轻松地编写满足要求的新语句。
使用AND和=撰写谓词
要提高SQL效率,请尽可能使用等值连接。 在未转换的列值上执行等值连接的语句是最容易调整的。
避免在WHERE子句中转换列
使用未转换的列值。 例如,使用:
WHERE.order_no = b.order_no
而不是:
WHERE TO_NUMBER (SUBSTR(a.order_no, INSTR(b.order_no, '.') - 1))
= TO_NUMBER (SUBSTR(a.order_no, INSTR(b.order_no, '.') - 1))
不要在谓词子句或WHERE子句中使用SQL函数。任何使用列的表达式,例如以列为参数的函数,都会导致优化器忽略在该列上使用索引的可能性,甚至是唯一索引,除非定义了基于函数的索引,数据库可以使用。
避免使用混合模式表达式,并注意隐式类型转换。如果要在VARCHAR2列charcol上使用索引,但WHERE子句如下所示:
AND charcol = numexpr
其中numexpr是数字类型的表达式(例如,1,USERENV('SESSIONID'),numcol,numcol + 0,...),Oracle数据库将该表达式转换为:
AND TO_NUMBER(charcol)=
相关文章:
Dav_笔记11:SQL Tuning Overview-sql调优 之 4
开发高效的SQL语句 本节介绍了提高SQL语句效率的方法: ■验证优化程序统计信息 ■审查执行计划 ■重构SQL语句 ■重组索引 ■修改或禁用触发器和约束 ■重组数据 ■随着时间的推移维护执行计划 ■尽可能少地访问数据 验证优化程序统计信息 查询优化器在确定最佳执行…...
vue3引入openlayers
安装ol包 OpenLayers作为 ol npm包提供,它提供了官方支持的API的所有模块。 官方地址:ol npm install ol模块和子模块约定 具有CamelCase名称的OpenLayers模块提供类作为默认导出,并且可能包含其他常量或函数作为命名导出: i…...
大数据管理中心设计规划方案(可编辑的43页PPT)
引言:随着企业业务的快速发展,数据量急剧增长,传统数据管理方式已无法满足高效处理和分析大数据的需求。建立一个集数据存储、处理、分析、可视化于一体的大数据管理中心,提升数据处理能力,加速业务决策过程࿰…...
Android --- 广播
广播是什么? 一种相互通信,传递信息的机制,组件内、进程间(App之间) 如何使用广播? 组成部分 发送者-发送广播 与启动其他四大组件一样,广播发送也是使用intent发送。 设置actionÿ…...
AR 眼镜之-蓝牙电话-实现方案
目录 📂 前言 AR 眼镜系统版本 蓝牙电话 来电铃声 1. 🔱 技术方案 1.1 结构框图 1.2 方案介绍 1.3 实现方案 步骤一:屏蔽原生蓝牙电话相关功能 步骤二:自定义蓝牙电话实现 2. 💠 屏蔽原生蓝牙电话相关功能 …...
stl-set
目录 目录 内部自动有序、不含重复元素 关于能不能自己造一个cmp,还挺复杂。 访问:只能用迭代器且受限 添加元素:没有pushback,用insert 复杂度:ologn 编辑 查找元素find()࿱…...
【Stable Diffusion】(基础篇五)—— 使用SD提升分辨率
使用SD提升分辨率 本系列博客笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 在前期作画的…...
5.CSS学习(浮动)
浮动(float) 是一种传统的网页布局方式,通过浮动,可以使元素脱离文档流的控制,使其横向排列。 其编写在CSS样式中。 float:none(默认值) 元素不浮动。 float:left 设置的元素在其包含…...
Spring Cloud微服务项目统一封装数据响应体
在微服务架构下,处理服务之间的通信和数据一致性是一个重要的挑战。为了提高开发效率、保证数据的一致性及简化前端开发,统一封装数据响应体是一种非常有效的实践。本文博主将介绍如何在 Spring Cloud 微服务项目中统一封装数据响应体,并分享…...
java算法day20
java算法day20 701.二叉搜索树中的插入操作450.删除二叉搜索树中的节点108 将有序数组转换为二叉搜索树 本次的题目都是用递归函数的返回值来完成,多熟悉这样的用法,很方便。 其实我感觉,涉及构造二叉树的题目,用递归函数的返回值…...
web自动化测试-python+selenium+unitest
文章目录 Web自动化测试工具1. 主流的Web自动化测试工具2. Selenium家族史 Web自动化测试环境搭建基于Python环境搭建示例:通过程序启动浏览器,并打开百度首页,暂停3秒,关闭浏览器 页面元素定位1. 如何进行元素定位?2.…...
LeetCode题练习与总结:组合两个表--175
一、题目描述 SQL Schema > Pandas Schema > 表: Person ---------------------- | 列名 | 类型 | ---------------------- | PersonId | int | | FirstName | varchar | | LastName | varchar | ---------------------- personId 是该表的主…...
数据结构:二叉搜索树(简单C++代码实现)
目录 前言 1. 二叉搜索树的概念 2. 二叉搜索树的实现 2.1 二叉树的结构 2.2 二叉树查找 2.3 二叉树的插入和中序遍历 2.4 二叉树的删除 3. 二叉搜索树的应用 3.1 KV模型实现 3.2 应用 4. 二叉搜索树分析 总结 前言 本文将深入探讨二叉搜索树这一重要的数据结构。二…...
深入理解Prompt工程
前言:因为大模型的流行,衍生出了一个小领域“Prompt工程”,不知道大家会不会跟小编一样,不就是写提示吗,这有什么难的,不过大家还是不要小瞧了Prompt工程,现在很多大模型把会“Prompt工程”作为…...
代码随想录算法训练营day6 | 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1.两数之和
文章目录 哈希表键值 哈希函数哈希冲突拉链法线性探测法 常见的三种哈希结构集合映射C实现std::unordered_setstd::map 小结242.有效的字母异位词思路复习 349. 两个数组的交集使用数组实现哈希表的情况思路使用set实现哈希表的情况 202. 快乐数思路 1.两数之和思路 总结 今天是…...
vue3 vxe-table 点击行,不显示选中状态,加上设置isCurrent: true就可以设置选中行的状态。
1、上个图,要实现这样的: Vxe Table v4.6 官方文档 2、使用 row-config.isCurrent 显示高亮行,当前行是唯一的;用户操作点击选项时会触发事件 current-change <template><div><p><vxe-button click"sel…...
Linux没有telnet 如何测试对端的端口状态
前段时间有人问uos没有telnet,又找不到包。 追问了一下为什么非要安装telnet,答复是要测试对端的端口号。 这里简单介绍一下,测试端口号的方法有很多,telent只是在windows上经常使用,linux已很少安装并使用该命令&…...
花几千上万学习Java,真没必要!(二十九)
1、基本数据类型包装类: 测试代码1: package apitest.com; //使用Integer类的不同方法处理整数。 //将字符串转换为整数(parseInt)和Integer对象(valueOf), //将整数转换回字符串(…...
C#如何引用dll动态链接库文件的注释
1、dll动态库文件项目生成属性中要勾选“XML文档文件” 注意:XML文件的名字切勿修改。 2、添加引用时XML文件要与DLL文件在同一个目录下。 3、如果要是添加引用的时候XML不在相同目录下,之后又将XML文件复制到相同的目录下,需要删除引用&am…...
WordPress原创插件:自定义文章标题颜色
插件设置截图 文章编辑时,右边会出现一个标题颜色设置,可以设置为任何颜色 更新记录:从输入颜色css代码,改为颜色选择器,更方便! 插件免费下载 https://download.csdn.net/download/huayula/89585192…...
LingBot-Depth部署教程:Docker Compose编排+模型缓存卷自动初始化
LingBot-Depth部署教程:Docker Compose编排模型缓存卷自动初始化 1. 引言:从稀疏数据到精准3D测量 你有没有遇到过这样的场景?手头有一个深度摄像头,但采集到的深度图总是零零散散,像一张被撕破的旧地图,…...
HIL测试入门避坑指南:从CANoe配置到故障注入的完整踩坑实录
HIL测试实战避坑手册:从零搭建车窗ECU测试台架的12个关键陷阱 第一次接触HIL测试时,我盯着实验室里那些闪烁的指示灯和缠绕的线缆,仿佛面对着一个未知的宇宙。作为车载测试领域最具挑战性的环节之一,HIL测试既是验证ECU可靠性的终…...
论文被吐槽逻辑乱?,有哪些真正实测靠谱的的降AI率工具推荐?
毕业论文降AIGC率,优先选语义重构 去AI痕迹 降查重率的工具,免费与付费结合最稳妥。下面按中文、英文、免费/付费分类推荐,附实测效果与适用场景。 一、中文论文降重工具(最常用) 1. 千笔AI(综合全能首选…...
51单片机外部中断实战:电平与边沿触发的按键检测优化方案
1. 51单片机外部中断基础入门 第一次接触51单片机外部中断时,我完全被那些专业术语搞晕了。什么电平触发、边沿触发,听起来就像天书一样。但实际用起来才发现,这其实是单片机最实用的功能之一。想象一下,你正在用单片机做一个智能…...
Joy-Con Toolkit:突破官方限制的任天堂手柄全能控制工具
Joy-Con Toolkit:突破官方限制的任天堂手柄全能控制工具 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit 重新定义手柄控制:从消费级到开发级的跨越 Joy-Con控制器作为任天堂Switch的核心…...
MiroFish群体智能引擎部署与配置全指南
MiroFish群体智能引擎部署与配置全指南 【免费下载链接】MiroFish A Simple and Universal Swarm Intelligence Engine, Predicting Anything. 简洁通用的群体智能引擎,预测万物 项目地址: https://gitcode.com/GitHub_Trending/mi/MiroFish MiroFish作为简洁…...
别急着升级glibc!解决scikit-learn的libgomp内存错误,我更推荐这个方法
生产环境避坑指南:如何优雅解决scikit-learn的libgomp内存分配错误 当你的AI服务突然抛出cannot allocate memory in static TLS block错误时,第一反应可能是升级系统库——但请先放下这个危险的念头。作为经历过三次生产环境崩溃的运维老兵,…...
ROS 之 rosdep 进阶技巧:高效管理workspace依赖关系
1. 从单package到workspace:为什么需要rosdep进阶技巧 刚开始接触ROS的时候,我和大多数开发者一样,每次遇到依赖问题都是手动安装。比如看到Could not find a package configuration file provided by "xxx"这样的错误,…...
Comsol瓦斯抽采:深入探索复杂的地下奥秘
comsol瓦斯抽采 该案例涉及不同抽采数学模型理论 不同渗透率模型、有效应力分布媒体变形情况、瓦斯抽采量瓦斯压力分布 涵盖不同地应力工况对比 有数个详细视频 视频涉及理论分析及推导、模型建立及案例操作过程在煤矿开采领域,瓦斯抽采是一项至关重要的技术&#x…...
Windows 7 SP2:让经典系统在现代硬件上重获新生的完整解决方案
Windows 7 SP2:让经典系统在现代硬件上重获新生的完整解决方案 【免费下载链接】win7-sp2 UNOFFICIAL Windows 7 Service Pack 2, to improve basic Windows 7 usability on modern systems and fully update Windows 7. 项目地址: https://gitcode.com/gh_mirror…...
