分页 - 行数过多的表



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

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

public function countRows()
{
    $q = $this->createQueryBuilder('q');
    $q->select('q.username');
    return $q->getQuery()->getSingleScalarResult();
}

但它似乎很慢。

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

如果你多次演算 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;
}

试试这个:

public function countRows()
{
    $q = $this->createQueryBuilder('q');
    $q->select('COUNT(q.username)');
    return $q->getQuery()->getSingleScalarResult();
}

您的查询没有计数,而是选择所有行,这可能非常慢。

相关内容

  • 没有找到相关文章

最新更新