sql优化

SQL优化 说一下自己的感悟:表结构(参考阿里的手册) 阅读详情

一、访问table的方式

        oracle采用两种访问表中记录的方式:

        (1)全表扫描

                  全表扫描就是顺序地访问表中的每条记录,oracle采用一次读入多个数据库块(database block)的方式优化全表扫描。

        (2)通过rowid访问表

         你可以采用基于rowid的访问方式情况,提高访问表的效率,rowid包含了表中记录的物理位置信息,oracle采用索引(index)实现了数据和存放数据的物理位置(rowid)之间的联系,通常索引提供了快速访问rowid的方法,因此那些基于索引列的查询就可以得到性能上的提高。

二、共享sql语句

        为了不重复解析相同的sql语句,在第一次解析之后,oracle将sql语句存放在内存中,这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享,因此,当你执行一个sql语句(有时被称为一个游标)时,如果它和之前执行过的语句完全相同,oracle就能很快获得已经被解析的语句以及最好的执行路径,oracle的这个功能大大地提高了sql的执行性能并节省了内存的使用,可惜的是oracle只对简单的表提供高速缓冲(cache buffering),这个功能并不适用于多表连接查询。

        数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性也就越大了。当你向oracle提交一个sql语句,oracle会首先在这块内存中查找相同的语句,这里需要注明的是,oracle对两者采取的是一种严格匹配,要达成共享,sql语句必须完全相同(包括空格、换行等)。

        共享的语句必须满足三个条件:

        (1)字符级的比较。

        (2)两个语句所指的对象必须完全相同。

        (3)两个sql语句中必须使用相同的名字的绑定变量(bind variables)

三、选择最有效率的表名顺序(只在基于规则的优化器中有效)

        oracle的解析器是按照从右到左的顺序处理from子句中的表名,因此from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表,当oracle处理多个表时,会运用排序及合并的方式连接它们,首先,扫描第一个表(from子句中最后的那个表)并对记录进行排序,然后扫描第二个表(from子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并。

         例如:

                  表 table1 100000 条记录

                  表 table2  10条记录

                  选择table2作为基础表(最好的方法)

          如果有3个以上的表连接查询,那就需要选择交叉表 (intersection table) 作为基础表,交叉表是指那个被其他表所引用的表。

四、where子句中的连接顺序

        oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须写在其他where条件之前,那些可以过滤掉最大数量记录的条件必须写在where子句的末尾。

五、select子句中避免使用“*”

        当你想在select子句中列出所有的column时,使用动态sql列引用“*”是一个方便的方法,不幸的是,这是一个非常低效的方法。实际上,oracle在解析的过程中,会将“*”依次转换成所有的列明,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。

有时间了再继续。。。
深度学习——VGG16模型详解 1、网络结构 VGG16模型很好的适用于分类和定位任务,其名称来自牛津大学几何组(Visual Geometry Group)的缩写。 根据卷积核的大小核卷积层数,VGG共有6种配置,分别为A、A-LRN、B、C、D、E,其中D和E两种是最为常用的VGG16和VGG19。 介绍结构图: conv3-64 :是指第三层卷积后维度变成64,同样地,conv3-128指的是第三层卷积后维度变成128; input(224x224 RGB image) :指的是输入图片大小为224244的彩色图像,通道为 阅读详情

相关推荐

springboot+shardingsphere+druid 实现基于时间的水平分表

使用shardingsphere基于时间字段的动态水平分片。

weixin_42207940的博客 2627

【MySql】Sql优化(三)——性能优化

一、前言      当数据库数据达到一定数量的时候,结合数据库连接池Druid的可视化监控界面,对系统中运行的sql语句进行检测,对使用频繁、执行时间长的sql语句进行优化。二、优化方案原则 [原则一:选择需要优化的SQL] 1,选择需要优化的SQL:不是所有的SQL都需要优化,在优化的过程中,首选更需要优化的SQL; 2,SQL运行较慢有两个影响原因,IO和CPU,明确性能瓶颈所在;

哈士奇 1929

CST入门——0. 安装CST Studio Suite 2022

安装CST Studio Suite 2022详细操作步骤

plmxu34的博客 6万+

sql优化常用的几种方法:19种最有效的sql优化技巧

我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下:1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据:MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。再例如:select id from t where num in(1,2,3) 对于连续的数值,能用between就不要用in了;再或者使用连接来替换。3、SE

Lost_in_the_woods的博客 3万+

python 写一个简单的 telegram bot (电报机器人)

replit.com 环境配置太恶心了,只能使用 poetry.poetry 这个名字是挺好听,用起来也是很垃圾,太恶心。heroku.com 注册登录不方便,需要各种验证。所以,部署的问题,目前搁置。

waterHBO的博客 3196

ISO7816协议深度解析-简单易懂协议详解(一)-- 复位,字符帧,及ATR

1. 摘要 IC卡必须支持T=0或T=1的协议,但不是同时支持这两种协议,而终端则必须同时支持T=0和T=1的协议。 • T=0通讯协议是异步半双工字符传输协议; • T=1通讯协议是异步半双工块传输协议; 在ISO7816-3标准中,具体规定了这两种协议:T0和T1。 IC卡所用的协议在TD1中指定,如果在复位应答信息中没有TD1,则表示用T=0的协议进行通讯。在复位应答后,IC卡和终端之间即用IC卡指定的协议进行通讯。 2. 硬件接口 1)VCC:电源输入(A类:5V, B类:3V) 2)GND:地 3

代码打工人的博客 4万+

SQL极致优化案例:利用索引特性进行max/min优化

不要错过更多干货文章,点击上方蓝字关注我们IS NOT NULL的优化1. 问题提出客户系统有这样一条SQL,脱敏后如下:SELECT NVL(MAX(T1.CREATED),SYSDAT...

Enmotech的博客 825

基于Simulink的柔性关节人形机器人振动抑制控制仿真

本文完成了基于Simulink的柔性关节人形机器人振动抑制控制仿真,实现了:✅ 建立二质量柔性关节动力学模型✅ 设计加速度反馈主动阻尼控制器✅ 对比陷波滤波与状态反馈效果✅ 验证大幅运动下的快速振动衰减能力✅ 为高动态人形机器人操作(如击掌、搬运)提供平滑执行基础。

xiaoheshang_123的博客 130

1 min 数据查询 SQL 优化

问题 前几天线上数据库 IOPS 飙升,一直居高不下,最近并没有升级。遂查看数据库正在执行的 SQL 语句,发现有个查询离线设备的语句极其缓慢。 探寻原因 SELECT o.* FROM ( SELECT * FROM pim_online WHERE t2 IS NOT NULL AND username LIKE 'd.f.%' ...

weixin_34419326的博客 121

C#串口通信从入门到精通(5)——打开、关闭串口

本文详细介绍如何打开串口

qq_34059233的博客 6783

Python赋能,洞见先机:构建基于异步爬虫与流处理的实时舆情监控系统

我们将从核心概念入手,逐步搭建一个集。.option("es.resource", "public-opinion-%s" % time.strftime("%Y-%m-%d")) \ # 按日期分索引。| 数据采集层 |----->| 消息队列层 |----->| 流处理与分析层 |----->| 存储与可视化层 |:使用Spark Streaming的状态操作或Flink的CEP库,检测更复杂的模式,如“某关键词的负面舆情在1小时内激增500%”。

2201_76125261的博客 434

对sql优化理解和如何sql优化?

SQL优化是数据库管理和性能调优的重要方面,它涉及对SQL查询语句和数据库结构的调整,以提高查询效率、减少响应时间、降低系统资源消耗。

H___Hkk的博客 1657

4、Vitis_HLS、Vivado 和 Vitis IDE 工具的设置与使用

本文详细介绍了使用Vitis_HLS、Vivado和Vitis IDE进行FPGA开发的完整流程,涵盖开发板选择、软件安装、IP设计与模拟、综合、导出以及在FPGA上的实现与验证。以Xilinx Artix-7和Zynq系列开发板为例,指导用户从环境搭建到最终硬件验证,完成一个32位加法器IP的开发,适用于嵌入式系统和硬件加速项目的学习与实践。

fff88的博客 181

[MySQL]SQL优化之sql语句优化

SQL查询优化在MySQL数据库中是提高性能的关键步骤之一。本文总结了一系列针对SQL查询的优化技巧,以帮助开发者改善查询性能,降低系统负载。

Panci_的博客 1491

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Sql(sql语句优化,索引设计优化)

Sql(sql语句优化,索引设计优化)

轻言细语莫泪痕 1954

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SQL查询优化

SQL查询优化 一、获取有性能问题SQL的三种方法 通过用户反馈获取存在性能问题的SQL 通过慢查询日志获取存在性能问题的SQL 实时获取存在性能问题的SQL 二、慢查询日志介绍 1、使用慢查询日志获取有性能问题的SQL (1) 参数配置 ...

weixin_38477351的博客 2万+

MySQL——SQL优化

SQL优化是提升数据库性能的关键。本文总结了17个SQL优化技巧,包括避免SELECT*、使用UNION ALL代替UNION、小表驱动大表、批量操作、合理使用LIMIT等查询优化方法。同时介绍了索引优化原则、数据库结构优化策略,以及如何通过执行计划分析、分页优化、配置调整等提高性能。文章还强调了避免大事务、使用存储过程等建议,并指出SQL优化需要结合具体业务场景持续进行。通过遵循这些优化策略,可以显著提升查询效率和数据库整体性能。

hj945218的博客 1054

sql 不等于优化_Oracle SQL优化

一 > 应用ORACLE的HINT(提示)处理:提示处理是在ORACLE产生的SQL分析执行路径不满意的情况下要用到的。它可以对SQL进行以下方面的提示 1. 目标方面的提示: COST(按成本优化) RULE(按规则优化) CHOOSE(缺省)(ORACLE自动选择成本或规则进行优化) ALL_ROWS(所有的行尽快返回) FIRST_RO...

weixin_39997253的博客 5331
上一篇: linux 服务器之间拷贝文件
下一篇: poverDesiger创建模型小结
java_min
博客等级 码龄18年 61粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值