mysql中in和exist区别

  • 如果查询的两不表大小相当,那么用EXISTSIN差别不大。
  • 如果两个表中一个较小,一个是大表,则子查询表大的用EXISTS,子查询表小的用 IN
IN 的执行流程:

SELECT * FROM A WHERE id IN (SELECT id FROM B)

  1. 执行子查询:SELECT id FROM B → 得到结果集 R

  2. 将结果集 R 物化(临时表)

  3. 对主表 A 进行全表扫描

  4. 对每行检查 id 是否在临时表 R 中

EXISTS 的执行流程:

SELECT * FROM A WHERE EXISTS (SELECT 1 FROM B WHERE B.id = A.id)

  1. 遍历主表 A 的每一行

  2. 对于每一行,执行子查询: SELECT 1 FROM B WHERE B.id = A.id

  3. 如果子查询返回至少一行,则保留该行

https://zhuanlan.zhihu.com/p/680915665

相关推荐
烂蜻蜓1 小时前
Django入门教程(三):django-admin与manage.py命令完全指南
数据库·django·sqlite
yunlaodacom2 小时前
腾讯云国际版代理商:COS标准、低频、归档和深度归档怎么选?存储成本与数据取回区别
数据库·云计算·腾讯云
Nturmoils2 小时前
SQL Server数据库迁移:V9R4C019 如何接住存量 T-SQL 批处理
数据库
NineData2 小时前
NineData智能数据管理平台新功能发布|2026年8月
数据库·人工智能·oracle·中间件·agent·数据库开发·ninedata
Elastic 中国社区官方博客2 小时前
Elasticsearch 向量数据库:几分钟内完成部署,以经济高效的方式扩展至数千亿规模
大数据·运维·数据库·elasticsearch·搜索引擎·ai·全文检索
1314lay_10072 小时前
C#调用Sql Server存储过程,有返回值的
数据库·sqlserver·c#
DBA_G3 小时前
GBase 8a数据库表空间多路径功能特点综述
数据库·oracle
TDengine (老段)3 小时前
TDgpt 使用 — 部署、SQL、算法
大数据·数据库·sql·算法·时序数据库·tdengine·涛思数据
晴天¥3 小时前
Oracle 19c数据库内存管理优化(内存管理方式调整及内存扩容)
数据库·oracle·oracle数据库集群调优
CQU_JIAKE4 小时前
9.10【A】
数据库