分页 - 有太多行的表

时间:2012-09-24 11:39:27

标签: php symfony doctrine-orm

我想从表中获取所有行的数量,以便计算将有多少页面。但问题是该表有大约1000行,每次当我试图找到它们有多少时,计算机速度变慢并需要重新启动。

我只需要行数而不需要别的。我试过这个:

public function countRows()
{
    $q = $this->createQueryBuilder('q');

    $q->select('q.username');

    return $q->getQuery()->getSingleScalarResult();
}

但似乎很慢。

有更好更快的方法来计算行数吗?或者也许是另一种分页方式,但是如何知道会有多少页?

2 个答案:

答案 0 :(得分:1)

如果你多次计算COUNT,将方法countRows()的结果保存在这个对象的属性中并返回它:

public function countRows()
{
    if ($this->countRowsQ === null)
    {
        $q = $this->createQueryBuilder('q');

        $q->select('COUNT(q.username)');

        $this->countRowsQ = $q->getQuery()->getSingleScalarResult();
    }

    return $this->countRowsQ;
}

答案 1 :(得分:0)

试试这个:

public function countRows()
{
    $q = $this->createQueryBuilder('q');

    $q->select('COUNT(q.username)');

    return $q->getQuery()->getSingleScalarResult();
}

您的查询不计算,但选择所有行,这可能会非常慢。