MySQLにデータセットがあり、制限の使用はすでにコストのかかるクエリであり、結果の数を見つけることもコストがかかります。したがって、結果の数を見つけるために別のクエリを実行することは避けたいと思います。制限がサブクエリ内にあるため、MYSQL_CALC_FOUND_ROWSを使用できません。
SELECT * FROM items,
(
SELECT
item_id
FROM
(etc)
WHERE
some.field=<parameter>
AND (etc)
GROUP BY (something)
ORDER BY (something_else) DESC
LIMIT 15
) subset
WHERE item.id=subset.item_id
結合アイテムを残してサブクエリを削除し、MYSQL_CALC_FOUND_ROWSを使用できるようにすることもできますが、これは非常に非常に低速です。私はすべてのインデックスの最適化を試しましたが、それが問題外であると仮定しましょう。
これは今や設計上の問題になります...最後のページがわからないときにユーザーがこのデータをページングできるようにするにはどうすればよいですか?私はそれらが行き過ぎているかどうかだけを知っています(例えば:クエリは結果を返しません)。