【发布时间】:2012-10-11 09:30:24
【问题描述】:
我在 MySQL 中有一个表,结构如下:
id int(10) PRIMARY,
app_no varchar(255)
和INDEX appno_index 类型为BTREE 字段app_no
现在这个表有 900000 + 条记录。我正在使用 CodeIgniter 模型列出记录。 我对 CodeIgniter 中记录列表的查询是
$query = $this->db->query("SELECT id, app_no FROM `app_no` USE INDEX(appno_index)");
但是 MySQL 会抛出这样的错误。
致命错误:C:\wamp\www\~\system\database\drivers\mysql\mysql_result.php 第 162 行中允许的内存大小为 134217728 字节已用尽(尝试分配 24 字节)
如何优化我的查询以使页面显示所有记录?
【问题讨论】:
-
看起来您的 PHP 进程一次只能使用 128 MB 内存。您的 900,000 条记录太大而无法放入内存(据推测,平均记录大小约为 128 字节)。还行吧;没有人会查看所有 900,000 条记录,因此您真的不希望您的页面显示所有 900,000 条记录或 PHP 将所有 900,000 条记录放入内存。如果您认为您确实需要它们,那么您正在设计您的应用程序......次优;数据库应该是您进行查询处理的地方,而不是应用程序。
-
是的,我当然不想在单个页面上显示 900000 条记录。如果每页显示 50 条记录,那就太酷了。
标签: php mysql codeigniter