2012-08-06 65 views
0

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

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

我到浏览器崩溃之前,MySQL查询浏览器进账约3万行,我也得到能说会道错误(gmem.c:173无法分配50080000字节。中止。)

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

+0

第一。您通常希望尽可能减少检索的行数。首先,它不是一个缺乏记忆的问题,但缺乏对需要检索的主要想法,所以基本上你必须考虑你想要什么以及如何更仔细地想要它。 – 2012-08-06 15:54:18

回答

0

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

问题是这样的:你用这个结果集做什么?你把它保存到一个文件?如果是这样,那么使用MySQL浏览器功能来做到这一点。它不需要像将整个结果集下载到RAM那样多的内存。

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

这里是正确的问题和答案:

所有你不想通过MySQL的浏览器进行检索3米记录

How to output MySQL query results in CSV format?

+0

是的,非常好的跟进。我想将结果导出到Excel文件。您能否告诉我如何“使用MySQL浏览器功能” – user1563414 2012-08-06 16:05:05