In 查询及其优化
- Afrikaans
- Albanian - shqipe
- Arabic - العربية
- Armenian - Հայերէն
- Azerbaijani - azərbaycanca
- Basque - euskara
- Belarusian - беларуская
- Bengali - বাংলা
- Bulgarian - български
- Catalan - català
- Chinese - 中文(简体中文)
- Chinese - 中文 (繁體中文)
- Croatian - hrvatski
- Czech - čeština
- Danish - dansk
- Dutch - Nederlands
- English
- Esperanto - esperanto
- Estonian - eesti
- Filipino
- Finnish - suomi
- French - français
- Galician - galego
- Georgian - ქართული
- German - Deutsch
- Greek - Ελληνικά
- Gujarati - ગુજરાતી
- Haitian Creole - kreyòl ayisyen
- Hebrew - עברית
- Hindi - हिन्दी
- Hungarian - magyar
- Icelandic - íslenska
- Indonesian - Bahasa Indonesia
- Irish - Gaeilge
- Italian - italiano
- Japanese - 日本語
- Kannada - ಕನ್ನಡ
- Korean - 한국어
- Latin - Lingua Latina
- Latvian - latviešu
- Lithuanian - lietuvių
- Macedonian - македонски
- Malay - Bahasa Melayu
- Maltese - Malti
- Norwegian - norsk
- Persian - فارسی
- Polish - polski
- Portuguese - português
- Romanian - română
- Russian - русский
- Serbian - Српски
- Slovak - slovenčina
- Slovenian - slovenščina
- Spanish - español
- Swahili - Kiswahili
- Swedish - svenska
- Tamil - தமிழ்
- Telugu - తెలుగు
- Thai - ไทย
- Turkish - Türkçe
- Ukrainian - українська
- Urdu - اردو
- Vietnamese - Tiếng Việt
- Welsh - Cymraeg
- Yiddish - יידיש
in 和 exist关键字
In
- 在8.0版本中,mysql优化器会去计算走索引要扫描的行数和时间(如果要回表,则还要计算回表的效率)与走全表扫描的时间,从而选择。
- 为了防止发生死锁和重复,mysql优化器选择排序条件后的范围查询。
- 所以,in条件少,(扫描的row少),一般走索引,条件多,则不走索引。但是如果使用到了联合索引,发生覆盖索引查询,一般都会比全表扫描的时间要短。(同理,使用主键索引不用回表一般也会使用主键索引)
- in条件只有一个会转化成条件查询 =,使用到了索引。其次可能用到的是range, index(索引的全表扫描),all。
结论:in一般会走索引,但是当范围过大,回表次数过多,索引会失效(二级索引)。但是如果查询符合覆盖索引或者查询条件为主键索引(不回表效率肯定高)的,那么,一定会用到索引。
子查询
执行顺序不同,in先执行子查询,exists先执行父查询。
子查询优化
大多数的(in)子查询优化为join, 当in数据量大的时候,子查询会产生临时表,导致索引失效,查询性能降低。
注意:优化的SQL有一定的局限性,不是所有的子查询都可以用join优化,如存在union, group by, order by, limit 等一般不用join,当SQL较为简单才可以优化。
In 查询及其优化的更多相关文章
- Atitit 如何利用先有索引项进行查询性能优化
Atitit 如何利用先有索引项进行查询性能优化 1.1. 再分析的话就是我们所写的查询条件,其实大部分情况也无非以下几种:1 1.2. 范围查找 动态索引查找1 1.2.1. 索引联合 所谓的索引联 ...
- SQL SERVER 查询性能优化——分析事务与锁(五)
SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...
- 高性能MySQL笔记 第6章 查询性能优化
6.1 为什么查询速度会慢 查询的生命周期大致可按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段. ...
- SQL Server 查询性能优化 相关文章
来自: SQL Server 查询性能优化——堆表.碎片与索引(一) SQL Server 查询性能优化——堆表.碎片与索引(二) SQL Server 查询性能优化——覆盖索引(一) SQL Ser ...
- SQL中的连接查询及其优化原则
连接查询是SQL的主要任务,只有很好的掌握了连接查询及其优化方法才算是掌握了SQL的精髓所在.最近在面试中遇到了有关连接查询的问题,感觉回答的不是很好,总结一下. 具体示例请参考:http://www ...
- mysql笔记03 查询性能优化
查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减 ...
- Sql Server查询性能优化之走出索引的误区
据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会.也什么没有必要去关心.了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是, ...
- SQL Server查询性能优化——堆表、碎片与索引(二)
本文是对 SQL Server查询性能优化——堆表.碎片与索引(一)的一些总结. 第一:先对 SQL Server查询性能优化——堆表.碎片与索引(一)中的例一的SET STATISTICS IO之 ...
- SQL Server查询性能优化——覆盖索引(二)
在SQL Server 查询性能优化——覆盖索引(一)中讲了覆盖索引的一些理论. 本文将具体讲一下使用不同索引对查询性能的影响. 下面通过实例,来查看不同的索引结构,如聚集索引.非聚集索引.组合索引等 ...
- SQL大量数据查询的优化 及 非用like不可时的处理方案
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
随机推荐
- 武汉工程大学第五届程序设计新生赛 I题 题解
(2022,12,3) 原题链接(来自牛客竞赛) 抽象题意 题目有点长,我们需要抽象出一个模型: 一个长度为\(n\)的序列\(a_i\),从\(a_1\)开始向后跳,每次可以从\(a_i\)跳到下一 ...
- 基于Prometheus搭建监控平台
目录 前言 配置server单节点 prometheus.service 配置node节点 配置mysql监控 在数据库中添加exporter账户 修改mysql_exporter的配置 添加serv ...
- 部署安装zookeeper集群
版本:3.7.0 节点IP: 172.50.13.103 172.50.13.104 172.50.13.105 获取安装包: wget http://mirrors.ustc.edu.cn/apac ...
- 修改经过Spring Gateway的Json数据
背景 使用Spring Cloud Gateway作为网关时经常会需要对报文内的json数据进行修改,但是目前看到的实现方法看起来都很复杂,这里提供一种使用Spring官方提供的ModifyReque ...
- 万字长文教你实现华为云IoT+OpenHarmony智能家居开发
本文分享自华为云社区<华为云IoT+OpenHarmony的智能家居开发>,作者:袁睿. 一.选题说明 1. 选题为基于OpenHarmony的智能家居,应用场景为户用,受益人群为住户. ...
- JVM面试题、关键原理、JMM
boolean:占用1个字节,取值为true或false. byte:占用1个字节,范围为-128到127. short:占用2个字节,范围为-32,768到32,767. int:占用4个字节,范围 ...
- Python面向对象——封装
文章目录 内容回顾 封装 为何要隐藏? 作业 内容回顾 上节课复习: 1.编程范式/思想 面向过程 介绍: 核心是"过程"二字 过程就是"流水线" 过程终极奥义 ...
- CSP-J 2022 游记
10.9 早上睡到 7:00. 上午继续学习 Vim,学习哈希表. 10.11 白天线段树,区间加从六参改成四参就过了 晚上模拟赛,感觉良好 10.16 膜你赛,std变量命名毒瘤. 想用 geogb ...
- Vue项目打包为桌面应用
vue项目首先使用 npm run build 打包为dist文件后,进入dist目录得到如下文件:就是打包后的html+css+js+static 新建一个deskapp文件夹,里面在新建一个App ...
- umicv cv-summary1-全连接神经网络模块化实现
全连接神经网络模块化实现 Linear与Relu单层实现 LossLayer实现 多层神经网络 不同梯度下降方法 Dropout层 今天这篇博文针对Assignment3的全连接网络作业,对前面学习的 ...