MySQL中使用IN()查询到底走不走索引?

MySQL中使用IN()查询到底走不走索引?

看数据量

  • 	EXPLAIN
    SELECT * from users WHERE is_doctor in (0,1); 
    
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F46PnJDg-1681257665213)(C:%5CUsers%5Cquyanliang%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1681257531822.png)]

  • 很明显没走索引,下面再看一个sql。

  • EXPLAIN
    SELECT * from users WHERE is_doctor in (2,1);
    
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CecVqr47-1681257665214)(C:%5CUsers%5Cquyanliang%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1681257554058.png)]

  • 又走索引了,所以IN查询走不走索引需要看rows的数据量,in (0,1)时查询出52万多数据量,全表才54万数据量,in (2,1)时只有1万多数据量。

  • EXPLAIN
    SELECT * from users WHERE (is_doctor=0 or is_doctor=1); 
    
    与 
    
    EXPLAIN
    SELECT * from users WHERE (is_doctor=2 or is_doctor=1);
    

IN后面是不是有子查询

  • EXPLAIN
    SELECT * from users WHERE is_doctor in (SELECT is_doctor from test_in_subselect);
    
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ntJpMJnu-1681257665215)(C:%5CUsers%5Cquyanliang%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5C1681257606234.png)]

总结

  • IN通常是走索引的,当IN后面的数据在数据表中超过*30%*的匹配时是全表扫描,不走索引,因此IN走不走索引和后面的数据量有关系。
  • 根据实际的情况,需要控制IN查询的范围。原因有以下几点
  • IN 的条件过多,会导致索引失效,走索引扫描
  • IN 的条件过多,返回的数据会很多,可能会导致应用堆内内存溢出。所以必须要控制好IN的查询个数

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

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

相关文章

day81【leetcode】打家劫舍专题

文章目录前言一、打家劫舍(力扣198)【相邻两间房不能偷】二、打家劫舍 II(力扣213)【围成一圈 相邻两间房不能偷】三、打家劫舍 III(力扣337)【树形DP】每日一题day81:链表中的下一个更大节点&a…

Java:jdk的安装以及hello world

由于本人头发较多,常常被认为是不用功的程序员;故,我来学学Java,希望我变秃了也变强了! 首先是java的安装,根据我司java的建议,安装了jdk8与jdk17!因为在众多的版本中,只…

《Netty》从零开始学netty源码(三十九)之PoolSubPage的内存分配

目录 PoolSubPage.allocategetNextAvail方法toHandle方法removeFromPool方法 PoolSubPage.allocate 上一篇我们介绍了PoolSubPage的简单知识,当我们需要PoolSubPage的内存时可调用allocate方法查找可分配二进制的位置,具体的源码过程如下: …

vite .env.test环境使用ant design vue ,打包后a-date-picker控件无法选择日期

前端开发后台管理系统,常用的UI库当属Element UI和 Ant Design Vue,但是前段时间遇到一个奇葩问题,在这里记录一下,防止小伙伴们踩坑。 后台系统,大家肯定都用过时间控件,本期我们使用的是ant design vue&…

网络-IP地址(嵌入式学习)

IP地址基本概念IPv4 五类:A B C D E特殊地址子网掩码子网号概念IPv6优势举个栗子基本概念 IP地址是Internet中主机的标识 IP地址(Internet Protocol Address 互联网国际地址)是一种在Internet上的给主机编址的方式,它主要是为互…

piwigo安装及初步使用

一 摘要 本文主要介绍piwigo 安装及初步使用,nginx \php\mysql 等使用 docker 安装 二 环境信息 2.1 操作系统 CentOS Linux release 7.9.2009 (Core)2.2 piwigo piwigo-13.6.0.zip三 安装 3.1安装资源下载 piwigo 请到官网下载https://piwigo.org 安装步骤也…

js非常的混乱怎么学才能入门呢?

前言 ES5还是要学的喔,里面有很多重要的概念,跟ES6有着很强的关联性,大致上包括: 变量声明 ES5 使用var关键字来声明变量,而 ES6 引入了 let 和 const 关键字,用于声明块级作用域的变量和常量。这些新的关…

MobPush创建推送

功能说明 MobPush提供遵循REST规范的HTTP接口,适用各开发语言环境调用。 IP绑定 工作台可以绑定服务器IP地址,未绑定之前所有IP均可进行REST API的调用,绑定后进仅绑定的IP才有调用权限。 调用地址 POSThttp://api.push.mob.com/v3/push/c…

坚鹏:《银行业数字化转型指导意见》政策解读及银行数字化转型

中国银保监会《关于银行业保险业数字化转型的指导意见》政策解读及银行数字化转型 课程背景: 很多银行存在以下问题: 不知道如何准确理解中国银保监会《关于银行业保险业数字化转型的指导意见》相关政策 不清楚中国银保监会《关于银行业保险业数字化…

TensorFlow 深度学习第二版:1~5

原文:Deep Learning with TensorFlow Second Edition 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只…

L2-044 大众情人分数 25分

人与人之间总有一点距离感。我们假定两个人之间的亲密程度跟他们之间的距离感成反比,并且距离感是单向的。例如小蓝对小红患了单相思,从小蓝的眼中看去,他和小红之间的距离为 1,只差一层窗户纸;但在小红的眼里&#xf…

36岁大龄程序员被裁,找了2个月工作,年包从100万降到50万,要不要接?

为了找到工作,你愿意接受降薪多少? 一位36岁的杭州程序员问: 36岁被裁,找了2个月工作,年包从100万降到50万,真心纠结,要不要接? 网友们分成了旗帜鲜明的两派,一派人认为不…

【面试题】20个常见的前端算法题,你全都会吗?

现在面试中,算法出现的频率越来越高了,大厂基本必考 今天给大家带来20个常见的前端算法题,重要的地方已添加注释,如有不正确的地方,欢迎多多指正💕 大厂面试题分享 面试题库 前后端面试题库 (…

基于RDF本体模型和图数据库实现知识查询与推理

基于RDF本体模型和图数据库实现知识查询与推理 基于RDF本体模型和图数据库实现知识查询与推理一、案例本体模型解释二、数据构建与查询 Here’s the table of contents: 基于RDF本体模型和图数据库实现知识查询与推理 本文主要使用ONgDB图数据库和Neosemantics组件,…

运行时内存数据区之虚拟机栈——操作数栈

操作数栈 每一个独立的栈帧中除了包含局部变量表以外,还包含一个后进先出(Last-In-First-Out)的操作数栈,也可以称之为表达式栈(Expression Stack)。操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据或提取数…

《花雕学AI》06:抢先体验ChatGPT的九个国内镜像站之试用与综合评测

最近ChatGPT持续大火,大家们是不是在网上看到各种和ChatGPT有趣聊天的截图,奈何自己实力不够,被网络拒之门外,只能眼馋别人的东西。看别人在体验,看别人玩,肯定不如自己玩一把舒服的啊。 上一期&#xff0…

视图的使用

为什么引入视图(Views) 如果您读过其他类似的书,可能会看到这些书在介绍视图时列举了许多引入视图的原因。其中认为最重要的原因是维护数据的独立性。那么什么是数据的独立性呢? 早期信息系统的设计与开发多采用模块驱动方式&am…

如何使用Win10搭建我的世界Minecraft服务器

简单几步在windwos搭建我的世界服务器,并通过cpolar工具将本地服务暴露到公网连接 1. Java环境搭建 以windows10系统为例,配置java环境,搭建我的世界服务器,下载最新版java版本 Java Downloads | Oracle 选择exe文件,下载完成后双击安装包…

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala 前言 【本文适合有一定计算机基础/半年工作经验的读者食用。立个Flg,愿天下不再有肤浅的SQL Boy】 谈到大数据开发,占据绝大多数人口的就是SQL Boy,不接受反驳,毕竟大…

开发者笑疯了! LLaMa惊天泄露引爆ChatGPT平替狂潮,开源LLM领域变天

来源: 新智源 微信号:AI-era Meta的LLaMA模型开源,让文本大模型迎来了Stable Diffustion时刻。谁都没想 谁能想到,一次意外的LLaMA泄漏,竟点燃了开源LLM领域最大的创新火花。 一系列表现出色的ChatGPT开源替代品——「羊驼家族」…