我在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未能分配50080000字节。中止。)
仅仅因为我没有足够的记忆吗?是否有任何人可以建议的技巧或性能增强查询?
答案 0 :(得分:0)
您正在使用的查询浏览器似乎将整个数百万行的结果集提取到RAM中。如果由于某种原因你必须这样做,你将需要更多的RAM。
问题是:你对这个结果集做了什么?你把它保存到文件?如果是这样,那么使用MySQL浏览器功能来执行此操作。它不需要像将整个结果集下载到RAM那样多的内存。
修改强>: MySQL查询浏览器正在被MySQL / Oracle淘汰。您可能应该找到一些其他程序来将行提取到CSV(Excel)文件。如果您愿意,某些工具也会创建XLS文件。
这是正确的问题和答案: