MySQLは、この種のことを特別にサポートしています。まず、SQL_CALC_FOUND_ROWS
を含めます SELECTで:
SELECT SQL_CALC_FOUND_ROWS *
FROM Badges
WHERE UID = '$user'
ORDER by Date DESC
LIMIT 10 -- Or whatever
次に、行を引き出して、すぐに FOUND_ROWS()
このように:
SELECT FOUND_ROWS()
LIMIT句を考慮せずに、元のクエリに一致した行数を取得します。
これはMySQL固有ですが、2つのクエリを実行するよりも少し速いはずです。