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 に答える