MySQL:按块检索大选择

2024-02-18

我已经选择了更多

7000 万行

我想将选定的数据保存到一个大的csv文件于win2012 R2

问:如何从 MySQL 中按块检索数据以获得更好的性能?

因为当我尝试保存一个我得到的大选择时

内存不足错误


您可以尝试使用LIMIT特征。如果你这样做:

SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000

您将获得前 1,000 行。首先LIMIT值 (0) 定义结果集中的起始行。它是零索引的,因此 0 表示“第一行”。第二LIMITvalue 是要检索的最大行数。要获取接下来的几组 1,000 个,请执行以下操作:

SELECT * FROM MyTable ORDER BY whatever LIMIT 1000,1000 -- rows 1,001 - 2,000
SELECT * FROM MyTable ORDER BY whatever LIMIT 2000,1000 -- rows 2,001 - 3,000

等等。当。。。的时候SELECT不返回任何行,您就完成了。

但这本身还不够,因为在一次处理 1K 行时对表所做的任何更改都会打乱顺序。要及时冻结结果,首先将结果查询到临时表中:

CREATE TEMPORARY TABLE MyChunkedResult AS (
  SELECT *
  FROM MyTable
  ORDER BY whatever
);

旁注:最好事先确保临时表不存在:

DROP TEMPORARY TABLE IF EXISTS MyChunkedResult;

无论如何,一旦临时表就位,就可以从那里提取行块:

SELECT * FROM MyChunkedResult LIMIT 0, 1000;
SELECT * FROM MyChunkedResult LIMIT 1000,1000;
SELECT * FROM MyChunkedResult LIMIT 2000,1000;
.. and so on.

我将让您创建逻辑来计算每个块之后的限制值并检查结果的结尾。我还建议使用比 1,000 条记录大得多的块;这只是我凭空挑选的一个数字。

最后,完成后删除临时表是一种很好的形式:

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

MySQL:按块检索大选择 的相关文章

  • 在mysql中的单个查询中更新多个表

    我有三个查询 我想要一个 这是我的查询 UPDATE tab1 SET a WHERE id 3 UPDATE tab2 SET b WHERE id 9 UPDATE tab3 SET c WHERE id 5 您可以尝试下面的代码 UP
  • 显示标准化数据

    跟进问题 添加 2 个不同表的总和 https stackoverflow com questions 39717541 adding sum from 2 different tables 我创建了3个表 members videos v
  • Galera 集群问题

    我想在我们的生产环境中使用Galera集群 但我有一些顾虑 每个表必须至少定义一个显式主键 每个表必须运行在InnoDB或XtraDB存储引擎下 分批处理您的大额交易 例如 不要让一个事务插入 100 000 行 而是将其分成更小的块 例如
  • MySQL - 从临时表插入

    这看起来非常简单 但我坚持使用简单的插入语句 见下文 begin work CREATE TEMPORARY TABLE IF NOT EXISTS insert table AS select r resource id fr file
  • 如果没有找到值,如何让 MySQL 中的 SUM 函数返回“0”?

    假设我在 MySQL 中有一个简单的函数 SELECT SUM Column 1 FROM Table WHERE Column 2 Test 如果没有条目Column 2 包含文本 Test 然后该函数返回NULL 而我希望它返回 0 我
  • 如何优化这个MySQL慢(非常慢)查询?

    我有一个 2 GB 的 mysql 表 包含 500k 行 我在没有负载的系统上运行以下查询 select from mytable where name in n1 n2 n3 n4 bunch more order by salary
  • Windows 8.1 升级后 Apache 无法工作 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 今天从 Windows 8 升级到 Windows 8 1 后 Apache 不再工作 我上次从 Windows 7 升级到 Window
  • 如何在 MySQL 中求和时间?

    正如您在图片中看到的 我有一份停机报告 显示了所选工厂在选定日期的停机时间 现在我想添加所有的值 Time Duration 列并将其显示在附近的单独显示中 TOTAL TIME DURATION 例如 在图像中 所选日期为 2015 年
  • Google Cloud SQL 在重新启动时卡住

    我的云 sql 实例长时间处于重新启动状态 在操作窗格中 重新启动的状态显示为待处理 并且还发生了导出 其状态仍为Running 有没有办法可以强制重新启动或取消重新启动或从常规备份中恢复数据 不 没有办法 如果您向 Google 支付高级
  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • mysql 中的二进制、十六进制和八进制值

    我对在 mysql 数据库中使用二进制 十六进制和八进制系统非常感兴趣 首先 请给我一个建议 为什么我们在存储信息时需要它们 因为信息太多 或者为什么 另外 哪种类型的值必须存储在标记系统中 另外这里还有像 这是例子 gt SELECT 5
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • CakePHP保存三模型关系关联

    我有以下输出 需要将其插入数据库中 Array Test gt Array Question gt Array 0 gt Array category id gt 3 answer style id gt 2 Answer gt Array
  • 将庞大数据库从亚马逊RDS导出到本地mysql

    我在 Amazon RDS 上有一个 mysql 数据库 大约 600GB 数据 我需要将其移回本地专用服务器 但我不知道从哪里开始 每次我尝试初始化 sqldump 时它都会冻结 有没有办法将其移至 S3 甚至可能在开始下载之前将其分成更
  • MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 条消息列表。使用emitter.setMaxListeners()来增加限制

    我知道这可能会标记为重复的解决方案 但堆栈溢出的解决方案对我不起作用 Problem node 5716 MaxListenersExceededWarning Possible EventEmitter memory leak detec
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关

随机推荐

  • Android zip 文件身份验证

    如果我想创建需要压缩视频并且用户必须有密码身份验证才能打开文件的应用程序 是否可以 如果可能的话 你们能给我一些示例代码吗 谢谢 问候 尝试这样的事情 OutputStream out new ZipOutputStream new Cip
  • IE7 不尊重显示:阻止

    我正在尝试使用以下 HTML 标记进行简单的垂直导航 ul li a a li li a a li li a a li ul 尽管有display block 在两个 li and a 元素 IE7 似乎不尊重包含 div 的完整宽度 对这
  • 如何使用 cocoon 在 Rails 中克隆子对象?

    我有一个父对象 其中有许多非常相似的子对象 我有一个带有表格的表单 可以使用 cocoon 来编辑它们 有了它 和这个答案 https stackoverflow com questions 18734783 nested form coc
  • JqG​​rid 选择可能或可能不可见的特定行

    我有一个 jqGrid 并且有几页项目 我有一行的 ID 该行可能位于第一页 也可能隐藏在其他页面的某个位置 给定行的 ID 如何以编程方式选择这样的行 我使用按钮的点击事件如下 on click function var myId thi
  • 虚拟继承[重复]

    这个问题在这里已经有答案了 虚拟 继承是什么意思 我看到了下面的代码 没明白关键字的意思virtual在以下情况下 class A class B public virtual A 虚拟继承用于解决 DDD 问题 Dreadful Diam
  • 如何在 Laravel 中向所有日志记录添加数据?

    我想向 Laravel 应用程序中的所有日志记录添加一些数据 我认为了解当前用户的用户名和 或客户端 IP 地址会很有帮助 目前我正在通过执行以下操作手动添加它 Log info Pre paid activation array user
  • MySQL-1300-更新时 utf8 字符串无效

    我有一个 MySQL 表列 我正在尝试将其从 latin1 转换为 UTF8 该列中的某些值已经是 UTF8 但它们存储为 latin1 这会导致一些看起来很奇怪的文本 切换列非常简单 我所要做的就是 ALTER TABLE user pr
  • 使用 WTForms 进行长排序下拉列表

    我想按字母顺序创建美国各州的下拉列表 我已将状态元组转换为 OrderedDict 并将其输入到我的 WTForms SelectField 中 import collections import wtforms STATE ABBREV
  • 在 XCode 5 中将项目导入远程 SVN 服务器

    以前在 XCode 4 中 在 Organizer 屏幕的 Repositories 部分中 有一个选项 导入 可将项目导入到 SVN 服务器中 该选项现在在 Xcode 5 的 Source Control 菜单中被禁用 尽管存储库已添加
  • Windows 7 无法写入物理驱动器?

    我编写了一个磁盘实用程序 允许您擦除整个物理驱动器 它使用 Windows 文件 api 调用 destFile CreateFile PhysicalDrive1 GENERIC WRITE FILE SHARE READ FILE SH
  • 如何使用 Postman 表单数据在 Django REST Framework 中发布嵌套数组?

    我有一个带有数组字段的嵌套可写序列化器 我需要用表单数据测试它 因为字段类型之一是ImageField 当我改变了ImageField into CharField如果我用原始 JSON 格式发布它 效果很好 我的简化版serializer
  • Linux下使用索引的文件搜索算法

    我想在linux中使用索引实现一个文件搜索程序 我知道还有其他几个文件搜索程序 例如beagled 但我这样做是为了学习目的 我对如何进行索引感到震惊 我从 maemo mapper 应用程序中得到了以下想法 例如 如果您有名为 sures
  • Symfony2 注销问题

    我正在 Symfony2 中测试安全环境 并且在注销过程中遇到问题 这是我的 security yml 文件 security firewalls secured area pattern anonymous switch user tru
  • 获取 IIS 应用程序文件系统路径

    我安装了 IIS 7 0 并且有一个带有 svc 服务的 net 应用程序 我想在应用程序指向的虚拟目录中指向一个文件 请注意 我在应用程序中转换了虚拟目录 但是 当我尝试使用 net verse 中的通用 api 调用打开文件 并且不指定
  • 比较 UIColors 或 CGColor 或 CGColorSpace

    我在比较 UIColors 时遇到问题 我有一张图像 我已成功提取用户单击的图像上的颜色 现在我想将该颜色与其他颜色进行比较 但我得到了一些奇怪的结果 这是我尝试过的 CGColorRef pixelColor buttonImage co
  • WordPress 插件 + Composer?

    我正在制作使用一些第三方库的 WordPress 插件 使用 Composer for WordPress 插件是常见做法吗 如果可以使用它 那么我认为我应该提供所有 Composer 文件以及我的插件 因为我不想让人们手动运行compos
  • 在多维数组中搜索某些值

    我有一个以下格式的多维数组 0 id gt 1 type gt fish owner gt bob 1 id gt 2 type gt cat owner gt mary 2 id gt 3 type gt dog owner gt lar
  • 通过 GitHub API 访问链接的 SAML 身份

    我想使用 GitHub API 任何版本 获取组织中 GitHub 登录名和电子邮件之间的映射 我可以使用以下 GraphQL 查询获取组织成员帐户上的电子邮件 query organization login myorg members
  • 如果 SSIS 中的值为 NULL,则条件拆分失败

    我根据以下规则将完整外连接的结果传递给条件拆分和过滤记录 基本上两个表具有相同的架构 并且主键值相同 a If Primary key of Source is NULL b If Primary Key of Destination is
  • MySQL:按块检索大选择

    我已经选择了更多 7000 万行 我想将选定的数据保存到一个大的csv文件于win2012 R2 问 如何从 MySQL 中按块检索数据以获得更好的性能 因为当我尝试保存一个我得到的大选择时 内存不足错误 您可以尝试使用LIMIT特征 如果