我正在相当大的MariaDB 10.0.6数据库(约200万条记录)上运行典型查询,在该数据库中我只想返回前几条记录。我正在使用的“ where”语句将匹配不超过5-10条记录。

该语句失败:

$lucky = $this->post->select("ID")->where('luckynumber', '=', '12345')->paginate(1);


而这有效(唯一的区别是-> paginate与first):

$lucky = $this->post->select("ID")->where('luckynumber', '=', '12345')->first();


日志文件表明我内存不足(已经增加到512 MB):

[2013-12-11 16:15:39] log.ERROR:500-耗尽的536870912字节的允许内存大小(尝试分配532152320字节)@ / lucky / 12345
/ var / www / lbs / app / storage / views / f775c03b70963c0:109中的异常'Symfony \ Component \ Debug \ Exception \ FatalErrorException',消息为'已耗尽536870912字节的内存容量(试图分配532152320字节)'

我正在使用Ubuntu Linux 12.04,nginx,php 5.5.6,

问题是什么?

最佳答案

似乎mariaDB会生成一个临时表。因此请注意为“幸运数字”列编制索引

10-04 10:40