我想从表中获取所有行数,以计算将有多少页。但问题是该表大约有 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();
}
您的查询没有计数,而是选择所有行,这可能非常慢。