【发布时间】:2012-08-07 00:17:53
【问题描述】:
我在 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.)
仅仅是因为我没有足够的内存吗?任何人都可以提出任何技巧或提高性能的查询吗?
【问题讨论】:
-
首先你不希望mysql浏览器检索3m条记录。您通常希望尽可能减少检索的行数。首先,这不是内存不足的问题,而是缺乏对需要检索什么的主要想法,所以基本上你必须更仔细地考虑你想要什么以及你想要它的方式。