首页 > 其他分享 >In 查询及其优化

In 查询及其优化

时间:2023-11-25 12:23:11浏览次数:41  
标签:及其 扫描 查询 回表 索引 全表 优化

  translator

  Double-click Select to translate  

in 和 exist关键字

In

  1. 在8.0版本中,mysql优化器会去计算走索引要扫描的行数和时间(如果要回表,则还要计算回表的效率)与走全表扫描的时间,从而选择。
  2. 为了防止发生死锁和重复,mysql优化器选择排序条件后的范围查询。
  3. 所以,in条件少,(扫描的row少),一般走索引,条件多,则不走索引。但是如果使用到了联合索引,发生覆盖索引查询,一般都会比全表扫描的时间要短。(同理,使用主键索引不用回表一般也会使用主键索引)
  4. in条件只有一个会转化成条件查询 =,使用到了索引。其次可能用到的是range, index(索引的全表扫描),all。

结论:in一般会走索引,但是当范围过大,回表次数过多,索引会失效(二级索引)。但是如果查询符合覆盖索引或者查询条件为主键索引(不回表效率肯定高)的,那么,一定会用到索引。

子查询

执行顺序不同,in先执行子查询,exists先执行父查询。

子查询优化

大多数的(in)子查询优化为join, 当in数据量大的时候,子查询会产生临时表,导致索引失效,查询性能降低。

注意:优化的SQL有一定的局限性,不是所有的子查询都可以用join优化,如存在union, group by, order by, limit 等一般不用join,当SQL较为简单才可以优化。

网址链接:https://www.bilibili.com/video/BV16H4y127kC/?spm_id_from=444.41.list.card_archive.click&vd_source=75bb2f53d007e412f0a191bb12a6e62c

标签:及其,扫描,查询,回表,索引,全表,优化
From: https://www.cnblogs.com/black-joker/p/17855383.html

相关文章

  • QueryBuilder写influxdb查询语句
    1.demo//按小时和指定字段获取每小时中的最大值SelectQueryImplselectQuery=select().max("horiValue").as("horiValue").max("vertValue").as("vertValue").from("jsnl","sta......
  • Vue element 关于下拉框输入模糊查询
    最近又一个新的需求,在输入框实现输入框下拉模糊查询开始对elementui还不熟悉,不知道怎么用,不过通过网上查阅资料发现使用<el-col:span="12"><el-autocompletev-model="form.name"......
  • Hive学习路线-优化
    十、优化1.数据倾斜maptask和reducetask的个数1.1maptask的个数:文件的大小、文件的个数、集群上blocksize的大小问题:小文件过多的问题(maptask并不是越多越好)在map执行前进行合并,减少maptask的个数//配置文件修改配置<property><name>hive.......
  • .NET8极致性能优化Non-GC Heap
    前言.NET8里面JIT引入了一个新的机制,叫做Non-GCHeap。JIT可以确保相关对象分配在Non-GCHeap上,该堆像其名称一样,不受GC管理。JIT需要保证这个对象没有被GC引用,并且在这个对象的生命周期内一直是根对象(不会被GC消灭的对象)的状态。原文:.NET8极致性能优化Non-GCHeap概述为什......
  • 第八单元 嵌套查询
    什么时候要使用嵌套查询?学生信息表:学生编号姓名班级Id电话性别生日180325011任我行513823204456男1999-09-09180325012张三413823204452女1998-08-08180325013李四218899251152男1997-07-07180325014王五113597445645女1998-08-081803250......
  • 第七单元 条件查询,分组查询
    1.条件查询条件查询是通过where子句进行检索的查询方式。select字段名1,字段名2,…,字段名nfrom数据表名where查询条件 1.如何使用排序(升序,降序)?asc:表示升序(默认排序方式)desc:降序排序语法:select...from表名[条件]orderby要排序的字段asc/desc--将......
  • 线段树优化建图
    CF786B题意:定义\((u,v,w)\)表示\(u\)向\(v\)连了边权为\(w\)的边。有三种连边操作\((u,v,w)\)\(\foralli\in[l,r],(u,i,w)\)\(\foralli\in[l,r],(i,u,w)\)求最短路。暴力加边是\(O(nm)\)的,考虑优化。可以把图建到线段树上,线段树每个结点向左右儿子连\(w......
  • 优化 AWS 云成本:降本增效的实用指南
    引言AWS云提供了广泛的服务,但有效地管理成本对于企业至关重要。通过实施一系列的最佳实践,你可以降低成本,提高效率,同时保持灵活性。本文将重点介绍如何实施和监控AWS云成本的优化措施。实施阶段1. 选择适当的实例类型和规格首先,仔细评估你的工作负载需求,并选择最适合的实例类型......
  • DP优化技巧
    感谢https://www.luogu.com.cn/user/249973#main老师。DP优化技巧矩阵优化DP1.矩阵快速幂(优化dp)2.四边形不等式优化dp(a,b,c,d)(ac+bd<=ad+bc)3.数据结构优化dp(线段树)4.单调队列、二分栈优化dp5.斜率优化dp矩阵定义矩阵乘法(更常见),矩阵加法矩阵加法一般式:\(C_{i,j}=A_{i,......
  • 后端的性能优化有哪些方面?
    Java的性能优化可以从多个方面入手,从影响性能的方面考虑一下。包括以下几个方面:线程池调优:适当地调整线程池的大小和线程数,可以提高程序的并发性能和响应速度。内存管理:合理地管理内存使用,包括对象的创建和销毁,可以提高程序的执行效率。IO操作优化:采用NIO方式可以减少IO......