为什么MySQL“插入...选择...”比单独选择慢得多?

2024-01-27

我正在尝试将查询结果存储在临时表中以供进一步处理。

create temporary table tmpTest
(
    a FLOAT,
    b FLOAT,
    c FLOAT
)
engine = memory;

insert into tmpTest
(
    select a,b,c from someTable
    where ...
);

但由于某种原因,插入最多需要一分钟,而单独的子选择只需要几秒钟。为什么将数据写入临时表而不是将其打印到我的 SQL 管理工具的输出要花费更长的时间???

UPDATE我的设置: MySQL 7.3.2 集群 8 个 Debian Linux ndb 数据节点 1 个 SQL 节点 (Windows Server 2012)

我正在运行 select 的表是一个 ndb 表。

我试图找出使用“插入..”时执行计划是否会有所不同,但它们看起来相同: (抱歉格式不对,stackoverflow 没有表格)



id  select_type     table       type    possible_keys   key     key_len ref                 rows        Extra
1   PRIMARY         <subquery3> ALL     \N              \N      \N      \N                  \N          \N
1   PRIMARY         foo         ref     PRIMARY         PRIMARY 3       <subquery3>.fooId   9747434     Using where
2   SUBQUERY        someTable   range   PRIMARY         PRIMARY 3       \N                  136933000   Using where with pushed condition; Using MRR; Using temporary; Using filesort
3   MATERIALIZED    tmpBar      ALL     \N              \N      \N      \N                  1000        \N
  

CREATE TABLE ... SELECT 也很慢。 47 秒对比没有表插入/创建的 5 秒。


我在上面写了一条评论,然后偶然发现了这个作为解决方法。

这将完成你想做的事情。

SELECT * FROM aTable INTO OUTFILE '/tmp/atable.txt';
LOAD DATA INFILE '/tmp/atable.txt' INTO TABLE anotherTable;

请注意,这样做意味着以某种方式管理 /tmp 表。如果您尝试将数据选择到已存在的 OUTFILE 中,则会收到错误。所以你需要生成唯一的临时文件名。然后运行某种 cron 作业来清理它们。

我猜 INFILE 和 OUTFILE 的行为不同。如果有人可以阐明这里发生的事情来解释 mysql 行为,我将不胜感激。

D

这是比使用 INFILE / OUTFILE 更好的方法。

设置事务隔离级别已提交读; 插入表格 选择...从...

这里有一篇相关的文章可供阅读:

如何改进 INSERT INTO ... SELECT 锁定行为 https://stackoverflow.com/questions/2640898/how-to-improve-insert-into-select-locking-behavior

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

为什么MySQL“插入...选择...”比单独选择慢得多? 的相关文章

  • MYSQL:如何从姓氏中找到player_id?

    我现在尝试使用非标准化 摘要 表中的数据填充 testMatch 表 如下 测试匹配表 Field Type Null Key Default Extra match id int 11 NO PRI NULL match date dat
  • 在 LAMP 配置中创建个性化 URL

    在 LAMP 配置下创建用户个性化 URL 的最佳方法是什么 例如 可以按如下方式访问用户个人资料页面 http www website com profile php id 1 http www website com profile p
  • 内存映射文件的性能/稳定性 - Native 或 MappedByteBuffer - 与普通的 FileOutputStream

    我支持使用平面文件 纯文本 进行持久化的旧版 Java 应用程序 由于应用程序的性质 这些文件的大小每天可以达到 100 MB 并且应用程序性能的限制因素通常是文件 IO 目前 应用程序使用普通的 java io FileOutputStr
  • PHP PDF生成问题

    我使用 FPDF 在 PHP 中创建 pdf 我使用会话变量将变量在一种表单之间传递到另一种表单 当我提供一个值时 Report php
  • 在 Entity-Framework Core 中批量插入到 MySQL [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个由约 10 000 个对象组成的列表 比方说类Person 我需要将其插入到 MySQL 表中
  • 浏览器关闭后从数据库中删除

    我正在开发一个电子商务应用程序 但问题是 当用户将产品添加到购物车并在订购前关闭浏览器时 购物车会带走所有产品 所有购物车项目都保存在表中 如果用户关闭浏览器而不订购 我只想刷新购物车 您可以使用 Javascript 事件捕获浏览器关闭并
  • 从高斯分布中采样随机值的最快方法是什么?

    The Box Muller 变换 http en wikipedia org wiki Box E2 80 93Muller transform 是一种从高斯分布中采样随机值的优雅且性能合理的方法 我正在寻找一种用 C 编写 清晰的更快方
  • 我应该测试是否等于 1 还是不等于 0?

    前几天我在这里编码 写了几个 if 语句 其中的整数总是要么0 or 1 实际上充当bools 我问自己 当检测结果呈阳性时 哪个更好 测试int 1 or int 0 例如 给定一个 intn 如果我想测试是否是true 我应该使用n 1
  • Hibernate 对于 Android 应用程序来说是一种杀伤力吗? [复制]

    这个问题在这里已经有答案了 我正在为我的 Android 应用程序寻找一个好的 ORM 乍一看似乎对于移动设备我更喜欢使用更简单的东西 问题是我只是在这里假设 没有真正的证据 所以我想我应该询问社区的意见 也许有人有过这样的经历 它是一个相
  • MySQL - 此版本的 MySQL 尚不支持“LIMIT 和 IN/ALL/ANY/SOME 子查询”

    这是php编码我正在使用的 Last Video db gt fetch all SELECT VID thumb FROM video WHERE VID IN SELECT VID FROM video WHERE title LIKE
  • 工厂模式数据库连接

    我正在尝试使用 MySQL 实现数据库连接上的工厂模式 SQL Server 面临奇怪的错误 你调用的对象是空的 在 SQL 命令对象上 internal class SqlServerDB IDatabase private SqlCon
  • PHP/MySQL:检索邻接列表模型中的单个路径

    有没有什么有效的方法可以在不限制深度的情况下根据节点的ID检索邻接列表模型中的单个路径 就像如果我有一个名为 Banana 的节点的 ID 我可以获得以下路径 Food gt Fruits gt Banana 如果不可能的话也不是什么大问题
  • 分析多层、分布式 Web 应用程序(服务器端)

    我想profile http en wikipedia org wiki Profiling 28computer programming 29来自服务器 PoV 的复杂 Web 应用程序 根据上面的维基百科链接和堆栈溢出profiling
  • Django:将博客条目查看次数增加一。这有效率吗?

    我的索引视图中有以下代码 latest entry list Entry objects filter is published True order by date published 10 for entry in latest ent
  • 如何让MySQL数据库完全在内存中运行?

    我注意到我的数据库服务器支持内存数据库引擎 我想让一个已经运行 InnoDB 的数据库完全在内存中运行以提高性能 我怎么做 我探索了 PHPMyAdmin 但找不到 更改引擎 功能 假设您了解注释中提到的使用 MEMORY 引擎的后果 并且
  • WHERE 子句或 ON 子句中的 INNER JOIN 条件?

    我今天输错了一个查询 但它仍然有效并给出了预期的结果 我的意思是运行这个查询 SELECT e id FROM employees e JOIN users u ON u email e email WHERE u id 139840 但我
  • 在无文本搜索查询中使用 sphinx 与 MySQL

    我有这样的疑问 假设我有一个大表 与一个较小的用户表有关系 这个想法是在那个真正的大表中搜索大于给定日期的日期并按分数 例如大整数 排序 并同时获取相关的用户信息 此查询的结果大约每 10 分钟就会更改一次 所以 没有文本搜索 但我有一个非
  • 如何获取mysql中一条记录的大小

    如果表包含 TEXT 或 BLOB 类型的字段 如何获取 MySql 中记录的大小 是否可以使用sql语句获取记录或表的大小 要计算字符串或 blob 的大小 以字节为单位 请使用LENGTH YourColumn http dev mys
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav

随机推荐

  • SVN更新,未提交更改的本地文件会发生什么?

    假设我正在处理一个本地文件 它是存储库的一部分 本地文件具有本地更改 并且已保存到本地文件但尚未提交 当我去更新整个存储库时会发生什么 SVN 是否会尝试将 HEAD 与本地副本合并 希望没有冲突 或者 SVN 是否会保留本地副本直到稍后提
  • “欺骗” SQL Server 接受来自 R 的文件

    我在 R 的本地环境中有一个文件 大约 1000000 行和 15 列 我正在尝试将此文件上传到 SQL 服务器 library odbc library DBI library RODBC dbWriteTable my connecti
  • 无法在本地主机上测试 facebook like 按钮(与以前不同)

    我开发了一个带有 Facebook 社交插件 点赞 推荐和发送按钮 的小网页 直到大约一个月前 我才能在本地主机上成功测试按钮和单击事件 但突然按钮现在无法在本地主机上工作 仅当我通过 localtunnel 将网页部署在公共 IP 上时
  • 修剪 ggplot2 中的第一个和最后一个标签

    我有一个按天列出两种类型数据的图 我希望只修剪图中的第一个和最后一个标签 这是数据的可重现示例 library dplyr library ggplot2 library scales dates lt paste0 2014 01 1 3
  • 读取 D3 中没有标题行的 csv/tsv

    我有 CSV 数据 看起来像 Data 1 1 10 1 2 50 1 3 5 etc 我正在尝试读入数据 但是 我的初始数据不包含标题行 如上所示 因此它将第一个数据行作为标题 1 1 10 有没有办法解决 我想在读取数据后设置标题名称
  • 如何使用 jQuery 验证插件以编程方式检查表单是否有效

    我有一个带有几个按钮的表单 我正在使用 jQuery 验证插件http jquery bassistance de validate http jquery bassistance de validate 我只是想知道是否有任何方法可以检查
  • 为什么我的侧边栏被推到内容下方?

    我正在尝试使用 HTML 和 CSS 设置模板 但我的侧边栏出现问题 它似乎被推到了我的内容下方 尽管它应该是在左侧 我不明白为什么 有没有人有什么建议 Example http jsfiddle net zDdfn http jsfidd
  • 在 SELECT 语句中使用 UDF

    我制作了一个用于计算营业时间的用户定义函数 这是我的UDF CREATE FUNCTION fn GetBusinessHour date datetime addHours int RETURNS datetime AS BEGIN DE
  • 括号() 和 SQL 查询性能

    在where语句中 是否添加不必要的括号 影响SQL性能 Example SELECT FROM table WHERE name John AND age 30 AND address Some Street AND height 510
  • Docker 容器拒绝连接

    我已经为此挣扎了相当长一段时间 我有一个 Django 应用程序 我正在尝试将其打包到容器中 问题是 当我发布到某个端口 8001 时 主机拒绝我的连接 docker machine ip default 192 168 99 100 当我
  • Derby 数据库导出为单个文件?

    我正在制作一个小型应用程序 并且正在使用嵌入式 derby 数据库 我希望该应用程序能够将整个数据库保存到一个文件中 该文件可以存储在硬盘驱动器上 并且还可以通过在未来 关于我该怎么做的任何线索或例子 这可能会帮助你 1 资源1 http
  • wpf按钮点击事件

    In this question https stackoverflow com questions 4720446 wpf adding tabitems dynamically 4722047 4722047我问了关于添加TabItem
  • Knockout.Js 数组过滤器语法

    刚刚开始接触 javascript 和 knockout js 我找到了很多我想要实现的目标的例子 我觉得我可能忽略了一个小语法错误 我正在尝试过滤已返回的集合 这个任务 通过 ajax json 从服务器获取 我的那个工作得很好 我想做的
  • PostgreSQL 未出现 RDS 日志记录

    我按照说明进行操作here https docs aws amazon com AmazonRDS latest UserGuide USER LogAccess Concepts PostgreSQL html 我的参数组更改的摘要如下所
  • 为什么不推荐使用浏览器嗅探?

    你到处都会听到这样的说法 使用 javascript 嗅探用户代理字符串来检测浏览器版本是一件非常糟糕的事情 最新版本的 jQuery 现已弃用 browser物体代替 support 但是 如果出现仅影响 IE 而不是其他浏览器的错误或问
  • 该项目已在选定位置处于源代码管理之下

    如何将 Visual Studio 解决方案添加到 TFS 例如 我创建了一个名为 PROJECTX 的新项目 并且我有名为 PROJECTX sln 的解决方案 我选择File gt Source Control gt Add Solut
  • Matlab立体相机标定场景重建错误

    I am trying to use the Computer Vision System Toolbox to calibrate the pair of cameras below in order to be able to gene
  • Gradle:“buildTypes”无法应用于 groovy.lang.Closure [重复]

    这个问题在这里已经有答案了 改变后targetSdkVersion and compileSdkVersion到22 并改变我的buildToolsVersion到22 0 1 我不断收到以下错误 buildTypes 不能应用于 groo
  • Select2 ajax不显示结果

    我正在使用 select2 和 ajax 来查询我的数据库中特定分类下的术语 但是当我搜索时 搜索框只是挂在 搜索 上而不检索任何结果 这是我的html
  • 为什么MySQL“插入...选择...”比单独选择慢得多?

    我正在尝试将查询结果存储在临时表中以供进一步处理 create temporary table tmpTest a FLOAT b FLOAT c FLOAT engine memory insert into tmpTest select