两种优化查询的方法

WSL 运行make提示/lib/modules/xxx/build: No such file or directory. Stop.错误解决办法 WSL运行make提示/lib//modules/xxx文件或目录不存在。 WSL2的内核是修改过的,无法使用 ubuntu上游的内核头文件和modules文件,因此,我们需要手动编译并安装一个版本。 阅读详情

两种优化表查询的方法:
1、表的查询顺序(针对多表查询)
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理。 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。当ORACLE处理多个表时, 会运用排序及合并的方式连接它们。首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并。
例如:
表 TAB1 16,384 条记录
表 TAB2 1 条记录
选择TAB2作为基础表 (最好的方法)

     select count(*) from tab1,tab2   执行时间0.96秒

选择TAB1作为基础表 (不佳的方法)

         select count(*) from tab2,tab1   执行时间26.09秒

如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表。
例如: EMP表描述了LOCATION表和CATEGORY表的交集。

SELECT * 
FROM  LOCATION  L, 
       CATEGORY  C,
       EMP E 
WHERE E.EMP_NO BETWEEN 1000 AND 2000
AND E.CAT_NO = C.CAT_NO
AND E.LOCN = L.LOCN

将比下列SQL更有效率

SELECT * 
FROM EMP E ,
LOCATION L , 
      CATEGORY C
WHERE  E.CAT_NO = C.CAT_NO
AND E.LOCN = L.LOCN
AND E.EMP_NO BETWEEN 1000 AND 2000

2、不是用IN
用EXISTS替代IN
在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接。在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率。
低效:

SELECT * 
FROM EMP (基础表)
WHERE EMPNO > 0
AND DEPTNO IN (SELECT DEPTNO 
FROM DEPT 
WHERE LOC = ‘MELB’)

高效:

SELECT * 
FROM EMP (基础表)
WHERE EMPNO > 0
AND EXISTS (SELECT ‘X’ 
FROM DEPT 
WHERE DEPT.DEPTNO = EMP.DEPTNO
AND LOC = ‘MELB’)

用NOT EXISTS替代NOT IN
在子查询中,NOT IN子句将执行一个内部的排序和合并。 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历)。 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS。
例如:

SELECT …
FROM EMP
WHERE DEPT_NO NOT IN (SELECT DEPT_NO 
                         FROM DEPT 
                         WHERE DEPT_CAT=’A’);

为了提高效率,改写为:
(方法一: 高效)

SELECT ….
FROM EMP A,DEPT B
WHERE A.DEPT_NO = B.DEPT(+)
AND B.DEPT_NO IS NULL
AND B.DEPT_CAT(+) = ‘A’

(方法二: 最高效)

SELECT ….
FROM EMP E
WHERE NOT EXISTS (SELECT ‘X’ 
                    FROM DEPT D
                    WHERE D.DEPT_NO = E.DEPT_NO
                    AND DEPT_CAT = ‘A’);
数据结构课程设计--基于知识图谱的中医食疗数据管理与应用 【代码】数据结构课程设计--基于知识图谱的中医食疗数据管理与应用。 阅读详情

相关推荐

告别手动输入!用Burp插件+ddddocr,5分钟搞定图片验证码自动识别

本文详细介绍了如何利用Burp插件和ddddocr开源库快速构建图片验证码自动识别系统,实现高效、零成本的验证码自动化解决方案。通过环境搭建、性能调优和Burp Suite深度集成,显著提升安全测试效率,特别适用于金融和电商系统的批量测试场景。

weixin_29099217的博客 202

数据库查询优化的两种方法

1.流水线(on-the-fly):主要的思想是不存储临时关系表,而是直接传递给下一个关系运算。  实体化方法则与之相反,主要是构造临时关系表,存储到磁盘上。 2. 左深度树:这个适用于多表查询时,将SQL查询语句构建成一个树的结构,主要的思想是改变Join的顺序来提升性能,比如两行的表去访问三行的表的这种join开销会比反过来小。

chchlh的专栏 1207

不止是回退SDK:深入解读UE5.2编译时那个烦人的C4756警告与INFINITY宏的变迁

本文深入解析了UE5.2源码编译时出现的C4756警告及其背后的技术原因,探讨了Windows SDK中INFINITY宏的变迁对Unreal Engine的影响。文章详细介绍了微软修改INFINITY定义的技术考量,并提供了UE5.2应对此类问题的灵活解决方案,包括通过BuildConfiguration.xml文件精确控制工具链版本,确保构建系统的可重复性和可配置性。

weixin_27180827的博客 310

数据库的查询优化方法

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t ...

weixin_42129286的博客 1万+

STM32+ESP8266接入OneNet物联网平台全流程

MQTT协议是物联网设备与云平台通信的主流轻量级消息传输标准,其发布/订阅模型天然适配嵌入式资源受限场景;OneJSON作为中国移动OneNet平台定制的数据格式,在标准JSON基础上精简Schema、降低解析开销,显著提升STM32等MCU的处理效率。该技术组合兼顾安全性、低功耗与工程可量产性,广泛应用于环境监测、智能仪表、工业传感器等远程数据采集系统。实际落地需协同完成云平台物模型定义、Token动态认证、MQTT Topic严格构造、AT指令可靠交互及单总线传感器数据融合等关键环节。本文以DS18B2

u5v6w7的博客 1120

光学仿真案例(4) 基于纳米微粒激发平面波的米氏散射FDTD仿真模拟

本案例展示了一个基于纳米粒子激发平面波的米氏散射仿真模型(mie scattering),计算其散射和吸收截面、局域场增强和远场散射分布,同时将截面和远场结果与解析解进行了比较,验证了仿真模拟的准确性。

q895235273的博客 3593

数据库查询优化

转:https://www.cnblogs.com/personsiglewine/p/13199007.html 1 硬件层的优化 1 CPU: 个数 / 核数 / 频率 / 线程数 / 一级 cache/ 二级 cache 2 内存 : 容量与 64-bits/ 带宽 3 I/O: seek(>100 次 / 秒 )/read/write(>10–20MB/s) 4 网络 : 带宽 / 传输协议 2 存储引擎优化 1 InnoDB : innodb_buffer_pool_size : c

qq_44671005的博客 401

直流电源滤波电路的设计与优化:从基础原理到高效应用

本文深入探讨直流电源滤波电路的设计与优化,从基础原理到高效应用全面解析。重点介绍电容滤波和电感滤波的工作原理及实战设计要点,分享复合滤波电路的进阶技巧,并提供常见问题排查指南。文章还涵盖现代滤波技术的新发展,如有源滤波和数字控制滤波的应用,帮助工程师提升电源系统的稳定性和效率。

weixin_29255731的博客 175

数据库性能优化中的查询优化

查询优化是数据库性能优化的核心环节,通过对查询语句和查询执行计划的优化,可以提高数据库系统的性能和效率。在实际应用中,可以通过使用索引、避免使用函数和表达式、避免使用子查询、使用正确的连接操作、使用正确的查询优化器和执行引擎、使用缓存技术等方法和技巧来优化查询操作。在进行查询优化时,需要综合考虑查询的复杂度、数据访问量、计算量和锁竞争等因素,选择合适的优化方法和技巧,以达到最优的查询性能和效率。

程序猿徐师兄的博客 1824

FPGA远程升级避坑指南:用AXI Quad SPI IP读写N25Q128 Flash的完整流程

本文详细介绍了FPGA远程升级过程中使用AXI Quad SPI IP读写N25Q128 Flash的完整流程,包括IP核配置、Flash操作指令集、双镜像备份设计及生产级远程升级协议。通过最佳实践和避坑策略,帮助开发者实现可靠的镜像更新方案,提升系统可靠性和可维护性。

weixin_30542079的博客 673

【100%通过率】华为OD机试真题 Python 实现【打印机队列】【2022.11 Q4 新题】

有5台打印机打印文件,每台打印机有自己的待打印队列。因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的代先级,其中数字越大优先级越高。打印机会从自己的待打印队列中选择优先级最高的文件来打印。如果存在两个优先级一样的文件,则选择最早进入队列的那个文件。现在请你来模拟这5台打印机的打印过程。

MISAYAONE的博客 1万+

如何优化数据库查询性能

需要注意的是,不同的数据库管理系统(如MySQL、PostgreSQL、MongoDB等)可能具有不同的优化策略和工具,因此在实际操作中需要根据具体的数据库类型进行调整和优化。SQL注入攻击是一种针对数据库驱动的应用程序的攻击技术。它通过在应用程序的输入字段中插入或“注入”恶意的SQL代码,从而改变应用程序原本的SQL查询逻辑,达到非法获取、篡改或删除数据的目的。优化数据库查询性能是一个复杂且多方面的任务,涉及到数据库设计、查询语句编写、索引使用、数据库对象优化等多个方面。一、如何优化数据库查询性能?

wssc63262的博客 2623

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JdbcTemplate 两种分页查询方法 分页效率优化

方式1: 扫描全部结果,再获取分页结果的行 JdbcTemplate jdbcTemplate = getJdbcTemplate(); int currPage = 150000; int pageSize = 10; int startRow = (currPage-1)*pageSize; StringBuffer countSql = new StringBuffer("select count(*) "); StringBuffer resSql = new StringBuffer("sele

m0_51527921的博客 6027

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JDBC封装工具类:优化查询功能的两种方法

在进行JDBC封装成工具类的时候,增删改可以直接进行封装,但是查询不可以,因为不同的SQL语句查询出的结果是不同的,所以Result结果集中的内容和类型都是不确定的,所以要进行特殊的封装 第一种方式 使用RowMapper接口,在其中定义一个将结果集转换成对象的方法,最终将转换后的对象都添加进集合中返回 public interface RowMapper<T> { T getRow(ResultSet resultSet); } 泛型类类型是Student类型,我们每查询一次就需要创

她的坏机器人 345

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

mysql 查询慢 分析_MySQL优化:定位慢查询的两种方法以及使用explain分析SQL

一条SQL查询语句在经过MySQL查询优化器处理后会生成一个所谓的执行计划,这个执行计划展示了具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。本章的内容就是为了帮助大家看懂EXPLAIN语句的各个输出项都是干嘛使的,从而可以有针对性的提升我们查询语句的性能。学习步骤定位慢查询。使用explain分析。定位慢查询SQL在平时工作中,我想你肯定遇到过一条sq...

weixin_39654352的博客 290

tail查询关键字_MySQL优化:定位慢查询的两种方法以及使用explain分析SQL

一条SQL查询语句在经过MySQL查询优化器处理后会生成一个所谓的执行计划,这个执行计划展示了具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。本章的内容就是为了帮助大家看懂EXPLAIN语句的各个输出项都是干嘛使的,从而可以有针对性的提升我们查询语句的性能。学习步骤定位慢查询。使用explain分析。定位慢查询SQL在平时工作中,我想你肯定遇到过一条sq...

weixin_33421065的博客 679

MySQL limit查询 百万级别数据分页查询优化的两种方式

注 : index_id 为主键索引 即 PRIMARY 一 生成测试数据 参考 文章 MySQL快速生成大量测试数据1000万 二 测试 1.创建索引 建表时已经设置了 id 是自增主键 在innoDB存储引擎中 自增主键默认作为聚蔟索引 2.分页查询 2.1 通常方式 #测试 LIMIT 测试 select * from t limit 1900000,10 可以看到执行时间为0.36秒 对执行计划进行分析 可以看到 type 是 ALL 也就是最慢的全表扫描,操作了二百一十万行记录 2.

纸上得来终觉浅,绝知此事要躬行 1301

比较两种SQL Server 链接服务器的查询方法

SQL Server 查询链接服务器上的数据有两种常用的方法: 1. 通过4部分名字(fourt-part name)直接查询。例如: SELECT * FROM JDE_LINKED.S10B3026.RTVTCOM.F0005 WHERE DRSY = '41' AND DRRT = 'S1' 这种方式的优点就是直观、方便,还可以传递参数给where字句,灵活。 ...

weixin_30709635的博客 3986

分页查询优化

1、子查询优化法 先找出第一条数据,然后大于等于这条数据的id就是要获取的数据 缺点:数据必须是连续的,可以说不能有where条件,where条件会筛选数据,导致数据失去连续性。 实验下: 代码如下 复制代码 mysql> set profiling=1; Query OK, 0 rows affected (0.00 sec) my

黑木爷的专栏 406

mysql 优化查询in_MySQL中where条件中IN的慢查询优化

MySQL中where条件中IN的慢查询优化我们在编写SQL查询语句时,有时候会遇到连表查询的情况,有时的业务场景为,要查询满足某种条件的一系列id的数据。优化方式一:示例:查询出指定时间之后凡是上传过图片的用户所在的镇和镇的管理员名。这种优化方式是另外一个博主那里借鉴过来的。SQL:SELECT DISTINCT user_name,town_name FROM t_farmers WHERE ...

weixin_39736047的博客 1661

优化分页查询

前言 很多时候,我们写分页查询的时候,只是单纯的想把结果查询出来就好了,但是有没有想过,自己写的分页查询效率会怎么,数据少的是没太大影响,但是多了就会有影响了,所以这篇简单介绍下分页查询的一些基本优化 比如下面的sql select a,b,c from t1 limit 10000,10; 表示从表 t1 中取出从 10001 行开始的 10 行记录。看似只查询了 10 条记录,实际这条 SQL 是先读取 10010 条记录,然后抛弃前 10000 条记录,然后读到后面 10 条想要的数据。因此要查询一

白小纯的博客 2092

分页查询、JOIN关联查询优化

现有如下表: CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位', `hire_time` tim

sxl123sxl的博客 1486

分页查询的sql优化

FROM good_info order by create_time desc LIMIT 1000000, 20),此时create_time 的索引树叶子结点不存在我们需要查询的值,需要回表查询。标签法利用历史分页记录来实现,结合了实际的应用场景,我们想象一下在社交论坛列表或者电商商品列表中,用户的行为总是向下滑。的条件是非常理想的,如果服务有分布式的需求的话,可能会将 id 变更为分布式一致性 id,比如雪花 id 等。比如 create_time 的索引树叶子结点存在我们需要的主键的值,那么。

qq_40397392的博客 1093

一个查询优化

一次工作中遇到的查询优化

yangguosheng的专栏 1437

分页查询慢的优化方式

分页查询也是我们项目中经常使用的查询方式,那么如何优化呢?

Java程序媛,欢迎大家一起交流学习~ 4060

mysql 嵌套查询优化_MySQL——优化嵌套查询和分页查询

优化嵌套查询嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。嵌套查询写起来简单,也容易理解。但是,有时候可以被更有效率的连接(JOIN)替代。现在假如要找出从来没有在网站中消费的客户,也就是查询在客户customer表中但是不在支付payment表中的客户信息。嵌套查询:explain select * from customer w...

weixin_36102010的博客 624
上一篇: mark
下一篇: note
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值