0

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

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

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

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

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

但它似乎很慢。

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

4

2 回答 2

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;
}
于 2012-09-24T12:05:17.227 回答
0

试试这个:

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

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

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

您的查询没有计算在内,而是选择了所有行,这可能会很慢。

于 2012-09-24T11:43:36.440 回答