次へと前へだけじゃないページングはやっぱり必要だと思う。

YappoLogs: なぜ SQL_CALC_FOUND_ROWS や LIMIT OFFSET のページングが良く無いのか

これ見て、

  • 世の中SQL_CALC_FOUND_ROWSとか使っても大丈夫な規模のデータは少なくないし、
  • そもそも次へと前へだけじゃないページング(以下ページジャンプ)は便利だし、
  • 無能なプログラマのために変な対処療法しても意味ないし、

適当なこと言ってるなと思った。下二つについて以下説明。

そもそも次へと前へだけじゃないページング(以下ページジャンプ)は便利だし、

もちろん「前へ 1 2 3 4 5 6 次へ」みたいなリッチなページングの実装には役に立たないかもしれません、でも果たしてそういったページング処理は本当に必要なんでしょうか?

常にとは言わないが、少なくない場合で必要だと思う。

そもそも、どういう場合に次にではなく、いくつか先にジャンプするか。

  • 欲しいものが現在のページにない。
  • 欲しいものが次のページにもない気がする。
  • でももっと先には欲しいものがあるかもしれない。

このような状況はなぜ起きるか。

  • 検索機能に不足があるか、検索精度の問題で、検索結果を欲しいものだけに絞り込めない。
  • だが、検索結果が二分探索可能な順番で並んでいるので、ページジャンプが事実上の絞り込みになる。

常に十分な検索結果を提供できたり、あるいは二分探索的な絞り込みをページジャンプ以外のUIで可能にするなら、ページジャンプはいらないかもしれない。

でもそれができないうちは、気をつけつつ使う、のがいいんじゃないかな。

技術の都合で適切なUI提供しないのは間違ってる。

無能なプログラマのために変な対処療法しても意味ないし、

なぜなら自分以外の誰かがメンテナンスをする事になった時に、その誰かが良くわからないでコピペで新機能を作ってしまう、その新機能がわりとデカイデータを取り扱う仕様だった!

よくわからないコピペをしちゃうようなプログラマは、そうしないよう教育すべき。教育せずに、重いページング処理を書かせないよう対処療法で対応してもどうせ別の問題を起こしてしまう。