0

我在 mysql 数据库中有一个非常大的表(几百万行)。每行都有一个作为字段创建的日期。我想提取从 2011 年到今天的行。我正在使用的查询看起来像这样:

select data1, data1, data3, data4, data5, data6 
  from db.table 
 where date(data3) between '2011-10-01' and '2012-08-06'

在浏览器崩溃之前,我在 mySQL 查询浏览器中获取了大约 300 万行数据,并且出现了 Glib 错误(gmem.c:173 failed to allocate 50080000 bytes. aborting。)

仅仅是因为我没有足够的内存吗?是否有任何人可以建议的技巧或性能增强查询?

4

1 回答 1

0

您正在使用的查询浏览器似乎正在将整个数百万行结果集提取到 RAM 中。如果由于某种原因你必须这样做,你将需要更多的 RAM。

问题是:你在用这个结果集做什么?您是否将其保存到文件中?如果是这样,那么请使用 MySQL 浏览器功能来执行此操作。它不需要几乎与将整个结果集下载到 RAM 一样多的内存。

编辑: MySQL / Oracle 正在淘汰 MySQL 查询浏览器。您可能应该找到一些其他程序来将您的行提取到 CSV (Excel) 文件中。如果您愿意,一些工具也会创建 XLS 文件。

以下是正确的问题和答案:

如何以 CSV 格式输出 MySQL 查询结果?

于 2012-08-06T15:53:39.843 回答