原则 1.2 寻呼机 - 它是否减少了从数据库请求的数据量


Doctrine 1.2 Pager - Does it reduce the amount of data requested from the database

如果我

从数据库中抓取时有一个大约 1k 标记的结果集,我刚刚想到了一些事情。

如果我使用教义(v1.2)_Pager每页限制为25个。 它是否将从数据库中提取的数据量减少到仅 25 个。 还是它仍然抓住整个集合然后减少它?

这样实现:

$perPage = 25;
$numPageLinks = 25;
$pager = new Doctrine_Pager($q, $input->page, $perPage);
$result = $pager->execute(array(), Doctrine::HYDRATE_ARRAY);
$pagerRange = new Doctrine_Pager_Range_Sliding(
    array('chunk' => $numPageLinks), $pager
);
$pagerUrlBase = '...';
$pagerLayout = new Doctrine_Pager_Layout(
    $pager, $pagerRange, $pagerUrlBase);
$pagerLayout->setTemplate('...');
$pagerLayout->setSelectedTemplate(
    '...'
);
$pagerLayout->setSeparatorTemplate('...');
$this->view->records = $result;

Doctrine 的寻呼机只会请求 25 条记录。

您可能会将其与 Zend_Paginator_Array 之类的东西混淆,后者采用完整的数组并根据配置对其进行修剪。

我建议您启用 mysql 查询日志,并跟踪生成的日志文件。有了它,您可以看到为每个请求发出的确切查询。正如 Mike B 所说,Doctrine_Pager将发出分页查询,这将导致限制、偏移组合,但您可能会通过跟踪查询日志文件看到您意想不到的其他查询。

例如,在跟踪日志文件时,我惊讶地发现unlink方法的教义被复制了。我仍然不知道是Doctrine还是Symfony发出了重复的删除查询,所以我只是编写了自己的取消链接,从而提高了数据库/应用程序的性能。