MySQL IN 子句是否多次执行子查询?

2024-02-04

给定 MySQL 中的 SQL 查询:

SELECT * FROM tableA WHERE tableA.id IN (SELECT id FROM tableB);

MySQL是否执行子查询SELECT id FROM tableB每行多次tableA?

有没有一种方法可以在不使用变量或存储过程的情况下使 sql 运行得更快?

为什么这通常比使用慢LEFT JOIN?


你的假设是错误的;子查询只会执行一次。它比 join 慢的原因是IN无法利用索引;每次它都必须扫描它的参数一次WHERE子句被评估,即表 A 中的每行评估一次。您可以优化查询,无需使用变量或存储过程,只需替换IN通过连接,因此:

SELECT tableA.field1, tableA.field2, [...]
FROM tableA 
  INNER JOIN tableB ON tableA.id = tableB.id

除非您不介意从两个表中获取每个字段,否则您确实需要枚举所需的字段SELECT条款;tableA.*例如,将引发语法错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL IN 子句是否多次执行子查询? 的相关文章

  • 在 MySQL 中执行触发器需要什么权限?

    我发现 MySQL 手册中对 DEFINER 的解释令人困惑 因此我不确定运行应用程序的 执行用户 需要什么权限 为了安全起见 我喜欢将 执行用户 限制为所需的最少权限 我知道触发器 存储过程的创建者需要超级权限 但是 执行用户 是否也需要
  • 在shell命令行中创建mysql触发器

    我需要在命令行中创建一个mysql触发器 这个sql在mysql控制台中运行良好 sql USE DB1 DROP TRIGGER IF EXISTS my trigger DELIMITER CREATE TRIGGER my trigg
  • MySQL:所有表都正常,但仍然错误 1577(发现事件调度程序使用的系统表已损坏)

    从我的系统日志 mysql 1663 ERROR 1577 HY000 at line 1 Cannot proceed because system tables used by Event Scheduler were found da
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • 重置 MySQL root 密码不起作用

    我花了很多时间阅读并尝试了数十种重置 root 密码的方法 但我一无所获 我发现 并尝试过 的最完整的说明如下 顺便说一句 我在 Win7 32 位上运行 MySQL 5 5 我创建了一个文件 c mysqlinit txt 其中包含两行
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • 删除表的重复项

    In my activity logs 它包含列 material name user id mod result 这标志着测试是否通过 失败 cert links 不知何故 用户生成了两倍的条目material name与cert lin
  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 当复选框条件更改时,如何使用ajax更新mysql数据库?

    我有一个在客户端按行显示的文章表 每篇文章都有一个唯一的 ID 并包含一个复选框以指示该文章是否被选中为收藏夹 如果它是最喜欢的 则该复选框已被选中 如果没有 则未选中 现在 如果特定于每一行的复选框条件发生变化 我需要 js 或 jque
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • 在上下文中提取搜索字符串

    我正在尝试执行 MySQL 查询 在上下文中提取搜索字符串 因此 如果搜索是 mysql 我想从 body 列返回类似的内容 下载后只需几分钟MySQL安装程序即可使用 这就是我现在得到的 但它不起作用 因为它只是从正文字段中获取前 20
  • PHP使用auto_increment生成短唯一ID?

    我想生成一个简短的 唯一的 ID 而不必检查冲突 我目前正在做类似的事情 但是我当前生成的 ID 是随机的 并且在循环中检查冲突很烦人 并且如果记录数量显着增加 将会变得昂贵 通常担心冲突不是问题 但我想要生成的唯一 ID 是一个由 5 8
  • 猪的组连接等效吗?

    试图在 Pig 上完成这个任务 寻找 MySQL 的 group concat 等效项 例如 在我的表中 我有以下内容 3fields userid clickcount pagenumber 155 2 12 155 3 133 155
  • MySQL - 多个结果集

    我正在使用 NET Connector 连接到 MySQL 在我的应用程序中 很少有线程使用相同的连接 因此如果 MySQLDataReader 尚未关闭并且某个线程正在尝试执行查询 则会出现该错误 已经有一个打开的 DataReader
  • MySQL 将表从 Latin1 转换为 utf8

    我需要将包含大量数据的表从 Latin1 转换为 utf8 以便它可以接受韩语字符 如何更改该表而不损坏其中的数据 我的 SQL 语句是什么 最好的方法是什么 ALTER TABLE database name table name CON
  • MySQL 可选的带有 MATCH 的 LEFT JOIN

    我有以下查询 它对 MySQL Innodb 数据库中同一搜索词的两个不同表中的两列执行全文搜索 SELECT Id MATCH tb1 comment tb2 comment AGAINST search term IN BOOLEAN
  • MySQL 左连接 WHERE table2.field = "X"

    我有以下表格 pages Field Type Null Key Default Extra page id int 11 NO PRI NULL auto increment type varchar 20 NO NULL
  • 如何在查询语句之外从mysql查询中获取值?

    这是下面的函数console log function quo value value connection query SELECT role from roles where id 1 function error results fi
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver

随机推荐

  • 如何从 Slack 机器人发送定期短暂(“隐藏”)消息

    我有兴趣编写一个 Slack 机器人 它会定期向用户发送 短暂 消息 临时消息是出现在频道内的消息 但只能由特定用户看到 例如对机器人 斜杠命令 例如 who 的响应 然而 这里的目标是让机器人定期发送临时消息 并且 出现在频道消息流中 即
  • 启动 Java Swing 桌面应用程序的正确方法

    启动需要 5 10 秒从数据库检索初始数据的应用程序的正确方法是什么 这是我到目前为止所得到的 但我不确定是否有更好的方法 我希望 GUI 和数据库访问位于不同的线程中 以便 GUI 构建与数据检索同时发生 public static vo
  • 如何解析来自 ruby​​ 客户端的 SOAP 响应?

    我正在学习 Ruby 并且编写了以下代码来了解如何使用 SOAP 服务 require soap wsdlDriver wsdl http www abundanttech com webservices deadoralive deado
  • 反序列化抽象类的集合[重复]

    这个问题在这里已经有答案了 我有一个包含 Web API 和 MVC Web 应用程序的解决方案 我的 API 有这个实体模型 有一个抽象父类和几个子类 public abstract class Person public Guid Id
  • Ruby:Proc#call 与 Yield

    以下两个 Ruby 实现之间的行为差 异是什么thrice method module WithYield def self thrice 3 times yield yield to the implicit block argument
  • 将日期 dd/mm/yyyy 格式从表单转换为时间戳?

    我有一份表格 要求填写日期dd mm yyyy格式 我尝试将其转换为时间戳strtotime 功能 但我发现只有当您在表格中填写日期时 它才有效dd mm yyyy 我该如何解决 我不知道国外的情况 但在意大利没有人这样写日期dd mm y
  • 如何获取recyclerview Item位置的文档id?

    我正在使用firebaseUI使用库来填充回收器视图firestore数据库 当我尝试检索时文档编号当我点击回收器查看项目时 它是这样的 DocumentSnapshot snapshot getSnapshots getSnapshot
  • 如何使用curl 访问IBM 语音转文本API?

    我无法使用curl 访问IBM Bluemix 上的语音转文本API 我尝试了文档中使用curl进行无会话请求的示例 但它不起作用 我收到无效的用户 ID 密码消息 这是我得到的错误 代码 401 错误 未授权 描述 2016 10 08T
  • 如何获取MemberInfo的值?

    我如何获得 a 的值MemberInfo目的 Name返回变量的名称 但我需要该值 我认为你可以这样做FieldInfo但我没有代码片段 如果你知道如何做到这一点 你可以提供一个代码片段吗 Thanks 虽然我总体上同意 Marc 关于不反
  • 数据导入期间超出 Fuseki GC 开销限制

    我正在尝试在启动时将 LinkedMDB 610 万个三元组 导入到我的本地版本的 jena fuseki 中 path to fuseki server file path to linkedmdb nt ds 它运行了一分钟 然后因以下
  • Java:字符串分割

    我有以下字符串 Mr John Smith Dickson lt email protected cdn cgi l email protection gt 我想把它分成三个部分 第1部分 先生第二部分 约翰 史密斯 迪克森第三部分 电子邮
  • 找出特定整数有多少个二进制数字[重复]

    这个问题在这里已经有答案了 可能的重复 计算快速对数以 2 为底的上限 https stackoverflow com questions 3272424 compute fast log base 2 ceiling 在 C C 中 找出
  • 页面性能:从 CDN 加载多个库脚本或将这些库组合并缩小为从服务器下载的一个文件?

    我了解从 CDN 加载 jQuery 等大型通用库的优势 但是较小的插件和库帮助程序 例如 jQuery ui 或 bootstrap 及其帮助程序 又如何呢 我的网站大约有 10 12 个 我是否应该从 cdnjs 中单独选择它们并获得
  • 在 erb 模板中嵌入 ejs 模板

    我正在构建一个 javascript 重的 Rails 3 应用程序 它使用 underscore js 它具有构建在 ejs 之上的非常优雅的模板机制 http embeddedjs com http embeddedjs com 问题
  • Flex:在动作脚本中实现经典的柯里函数?

    在 ActionScript 中以良好的语法实现经典柯里化函数的最佳方法是什么 我试过了 Function prototype curry function return helloWorld trace function void cur
  • VBA 中的 Powerpoint 幻灯片计数变量

    我正在用 vba 创建一个 Powerpoint 我的计划是设置代码 使每个子例程创建特定的幻灯片 但是 我需要将幻灯片编号传递给每个子例程 以便它在正确的位置创建正确的幻灯片 我无法定义 excel vba 中的 Slides Count
  • 在Python中通过FTP代理与ftplib连接?

    我正在尝试从 FTP 下载文件 在家里工作正常 但是当我通过公司网络运行时就无法工作 我知道与代理有关 我看过一些关于 Python 中代理问题的帖子 我尝试建立与代理的连接 url 工作正常 但连接 FTP 时失败 有谁知道如何做到这一点
  • 如何在Docker中支持组播网络

    我在docker中遇到了一个关于网络配置的大问题 情况是这样的 1 我的服务器上有两个 eth eth0 和 eth1 eth0 flags 4163
  • Datareader 在 VS 中没有返回结果,但存储过程在 Sql Server 中返回多个结果集

    我在 Visual Studio 2008 中从数据读取器检索结果时遇到问题 我在同一个数据库中有多个存储过程 我能够从那些不接收输入参数的值中检索值 但是 当我在带有输入参数的存储过程上使用 executreReader 方法时 我得到一
  • MySQL IN 子句是否多次执行子查询?

    给定 MySQL 中的 SQL 查询 SELECT FROM tableA WHERE tableA id IN SELECT id FROM tableB MySQL是否执行子查询SELECT id FROM tableB每行多次tabl