ORACLE 性能优化 高水位调节

            当我需要去做优化时,有一个固定的优化思路:SQL优化->索引优化->分区优化->优化器hints优化

SQL 语句优化:

          1.如有 子查询 但是没有with as 临时表,优先考虑用with as临时表,来代替子查询,不仅增加代码的易读性,更重要的是临时表是一次扫描,多次使用,这也是提升性能的原因-达到了'少读'的目标;

2.就是select,select后面避免使用*,查什么字段就写什么字段,因为使用*是走全表扫描的,不走索引

3.最有效率的表名顺序,oracale的解析器按照从右到左的顺序处理FROM子句中的表名,所以把数据记录最少的放在最后面,如果有三张表以上的表,那就把交叉表放在最后面;

4.,join 之前先去重或者过滤一下,这样join时连接表的数据量更少,连接过程就优化了

5.然后where过滤也是有顺序的,优先吧过滤数据更多的条件放在最后面,避免去使用模糊查询like,in,exists,not等以及避免一些索引列上进行计算,这类情况下会造成索引失效,走全表扫描,增加I/O读取次数。

索引优化:

 1.需要建索引的情况,经常需要搜的列,建索引可以加快查询速度,经常需要join连接的列,建索引可以加快连接速度,经常使用where的子句中的列,建索引可以加快判断速度,经常group by,order by 的列,建索引可以加快排序的速度

分区优化:

如果原表是没有建分区的话,会考虑重新创建一个一模一样的表并选择合理的分区方式,分区的方式有范围分区,列表分区,哈希分区,组合分区,interval分区,然后再把数据导进来,alter table rename 来修改原表名字成为历史表,再修改新表名字成为需求表

考虑到  数据量过于大了,可以先考虑先分表再分区提升性能,分表是通过定时任务,使用存储过程执行动态sql实现每年or每半年,每季度,根据实际情况来定,进行分表存储,每年的数据存储在对应的分表之中,如果数据量还是大,就要考虑到分区了,这个时候可以选择按月分区

优化器hints的优化

当遇到SQL执行计划不好的情况,应优先考虑统计信息等问题,而不是直接加Hint了事。如果统计信息无误,应该考虑物理结构是否合理,即没有合适的索引。只有在最后仍然不能SQL按优化的执行计划执行时,才考虑Hint。

Hint的弊端

  • Hint是比较"暴力"的一种解决方式,不是很优雅。需要开发人员手工修改代码。

  • Hint不会去适应新的变化。比如数据结构、数据规模发生了重大变化,但使用Hint的语句是感知变化并产生更优的执行计划。

  • Hint随着数据库版本的变化,可能会有一些差异、甚至废弃的情况。此时,语句本身是无感知的,必须人工测试并修正

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VPot-Free一款功能强大的文字转语音工具 v2306

01 软件介绍 VPot-FREE是一款功能强大的免费文字转语音工具,为用户提供了便捷的语音合成功能。无论是想将文字转化为语音进行朗读,还是将文章转为语音保存,VPot-FREE都能满足你的需求。 多种语音风格可供选择,包括男声、女声以及…

笔记-用Python脚本启停JAR程序

用Python脚本启停JAR程序,需要用到python中的以下内置模块 subprocess 是 Python 的一个标准库模块,用于在新进程中执行子命令,获取子进程的输入/输出/错误以及返回码等os 是 Python 的一个标准库模块,它提供了与操作系统交互的功…

Vue---混入

Vue—混入 目录 Vue---混入声明mixin**局部使用**全局使用 mixin(混入):可以将组件中共用的配置提取到一个对象内,以此便不用再每个组件中都写一遍了 声明mixin 定义mixin/index.js文件 const mixinData {data(){return {name…

Linux内核深入学习 - 中断与异常(上)

中断与异常 中断通常被定义为一个事件:让事件改变处理器执行的指令顺序这样的事件,与CPU芯片内外部硬件电路产生的电信号相对应! 中断通常分为同步中断与异步中断: 同步中断指的是当指令执行时,由CPU控制单元产生的…

基于Java-jsp的现代数字化城市公交查询系统论文(四)

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ ➡️点击免费下载全套资料:源码、数据库、部署教程、论文、答辩ppt一条龙服务 ➡️有部署问题可私信联系 ⬆️⬆️⬆️​​​​​​​⬆️…

音视频入门基础:像素格式专题(1)——RGB简介

一、像素格式简介 像素格式(pixel format)指像素色彩按分量的大小和排列。这种格式以每个像素所使用的总位数以及用于存储像素色彩的红、绿、蓝和 alpha 分量的位数指定。在音视频领域,常用的像素格式包括RGB格式和YUV格式,本文…

a-table 控制列的展示和隐藏

一、业务场景: 最近在使用 Antd-vue 组件库的时候,a-table需要根据不同角色的权限显示和隐藏 columns的列 为了避免大家走弯路,为大家整理了一下,粘走可以直接用的那种 二、具体实现步骤: 1.在需要显示与隐藏的列增加一…

制定语音芯片的语音识别指令时需要关注的内容

背景 最近定义设备识别的语音指令以及对应的语音反馈。虽然语音控制在软件里只是很小的一块功能,但也不能太马虎。新人入坑就要学习,学习前人的经验规避问题,最后总结经验给后人,给未来的自己。好记性不如烂笔头~ 下面一些问题是…

1700java进销存管理系统Myeclipse开发sqlserver数据库web结构java编程计算机网页项目

一、源码特点 java web进销存管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为sqlser…

『FPGA通信接口』DDR(3)DDR3颗粒读写测试

文章目录 前言1.配套工程简介2.测试内容与策略3. 测试程序分析4.程序结果分析5.一个IP控制两颗DDR36.传送门 前言 以四颗MT41K512M16HA-125AIT颗粒为例,介绍如何在一块新制板卡上做关于DDR3的器件测试。前面两篇介绍了什么是DDR,并介绍了xilinx给出的FPG…

基于Springboot的音乐翻唱与分享平台

基于SpringbootVue的音乐翻唱与分享平台设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 音乐资讯 音乐翻唱 在线听歌 后台登录 后台首页 用户管理 音乐资讯管理…

Elasticsearch:探索 11 种流行的机器学习算法

作者:来自 Elastic Elastic Platform Team 过去几年中,机器学习(ML)已经悄然成为我们日常生活中不可或缺的一部分。它影响着从购物网站和流媒体网站上的个性化推荐,到保护我们的收件箱免受我们每天收到的大量垃圾邮件的…

3.9设计模式——Strategy 策略模式(行为型)

意图 定义一系列的算法,把它们一个个封装起来,并且使他们可以相互替换此模式使得算法可以独立于使用它们的客户而变化 结构 Strategy(策略)定义所有支持的算法的公共入口。Context使用这个接口来调用某ConcreteStrategy定义的方…

手撕spring框架(2)

相关系列 java中spring底层核心原理解析(1)-CSDN博客 java中spring底层核心原理解析(2)-CSDN博客 手撕spring框架(1)-CSDN博客 依赖注入原理 依赖注入(Dependency Injection,简称DI)是一种设计模式,它允许我…

DS高阶:图论基础知识

一、图的基本概念及相关名词解释 1.1 图的基本概念 图是比线性表和树更为复杂且抽象的结,和以往所学结构不同的是图是一种表示型的结构,也就是说他更关注的是元素与元素之间的关系。下面进入正题。 图是由顶点集合及顶点间的关系组成的一种数据结构&…

深入浅出DBus-C++:Linux下的高效IPC通信

目录标题 1. DBus简介2. DBus-C的优势3. 安装DBus-C4. 使用DBus-C初始化和连接到DBus定义接口和方法发送和接收信号 5. dbus-cpp 0.9.0 的安装6. 创建一个 DBus 服务7. 客户端的实现8. 编译和运行你的应用9. 瑞芯微(Rockchip)的 Linux 系统通常会自带 db…

上位机开发PyQt(五)【Qt Designer】

PyQt5提供了一个可视化图形工具Qt Designer,文件名为designer.exe。如果在电脑上找不到,可以用如下命令进行安装: pip install PyQt5-tools 安装完毕后,可在如下目录找到此工具软件: %LOCALAPPDATA%\Programs\Python\…

智能体可靠性的革命性提升,揭秘知识工程领域的参考架构新篇章

引言:知识工程的演变与重要性 知识工程(Knowledge Engineering,KE)是一个涉及激发、捕获、概念化和形式化知识以用于信息系统的过程。自计算机科学和人工智能(AI)历史以来,知识工程的工作流程因…

【Web】2024XYCTF题解(全)

目录 ezhttp ezmd5 warm up ezMake ez?Make εZ?мKε? 我是一个复读机 牢牢记住,逝者为大 ezRCE ezPOP ezSerialize ezClass pharme 连连看到底是连连什么看 ezLFI login give me flag baby_unserialize ezhttp 访问./robots.txt 继…

ChatGPT向付费用户推“记忆”功能,可记住用户喜好 | 最新快讯

4月30日消息,人工智能巨头OpenAI宣布,其开发的聊天机器人ChatGPT将在除欧洲和韩国以外的市场全面上线“记忆”功能。这使得聊天机器人能够“记住”ChatGPT Plus付费订阅用户的详细信息,从而提供更个性化的服务。 OpenAI早在今年2月就已经宣布…
最新文章