回答編集履歴

1 修正

退会済みユーザー

退会済みユーザー

2017/02/22 22:28  投稿

```sql
SELECT SQL_CALC_FOUND_ROWS カラム FROM テーブル名 WHERE 条件式 LIMIT 0, 20;
```
のあとで
```sql
SELECT FOUND_ROWS;
```
という代替手段もありますが、 **いずれにしてもクエリを2回実行することに変わりはありません** 。
`SQL_CALC_FOUND_ROWS` は MySQL のみの拡張機能なので、他のSQLでは利用できません。
また、MySQLだからと言って積極的に利用できるものかというとそうでもない。
データ数が多くなるとパフォーマンス低下が著しい。
データ数が多くなるとパフォーマンス低下が著しい。
ページングのためには、クエリを2回発行するのは、致し方ありません。他に方法はないです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る