タグ

sqlに関するdame_orzのブックマーク (1)

  • ページングするためだけにSELECT COUNT(*)しない - cloned.log

    件数の多い一覧にはページングが必要になるのだけど、ずっと前からこのページングのリンク(前へ | 次へ、とか)を表示するためだけに、レコードの総件数をカウントするのが無駄だなぁと思っていた。一般的なRDBを使っている場合には、一覧取得のSQLと同じWHERE句のCOUNT問い合わせを行わなければならず、コーディング上も面倒だし、DBに対するクエリが増えるのもいただけない。総件数を表示するのであれば仕方がないけれども、そうでない場合にはなんとかしたい。 いつも不満に思っていたおかげで、最近やっと「前へ | 次へ」のような単純なページングの場合にはCOUNT問い合わせをしなくてもよいことに気がついた。とても今更すぎるけれども。 例えば、20件ずつの一覧であればLIMITを21にして取得したレコードが21件あれば「次へ」を表示するだけでよかった。「前へ」はオフセットが0でなければ表示すればよいので

    ページングするためだけにSELECT COUNT(*)しない - cloned.log
  • 1