リーリー
select * from news_base limit このSQLはページ数に基づいて特定のデータを取得するためのものです。
ただし、前景ページでは「前のページ 1.2.3.4.5 次のページ」のページめくり効果が必要なので、それを計算するにはデータの合計を知る必要があります。ただし、SQL select * from news_base 制限ではデータの総数を取得できません。
そのため、配列を返すことができる別のSQL「select * from news_base」を記述する必要がありました。次に、計算のために長さの合計値を取得できます。
しかし、2 つの SQL は非常に冗長に感じられます。 。コードが肥大化しているように感じます。 。
ページめくり効果を実現するもっと良い方法はありますか?
フロントデスクではejsテンプレートエンジンを使用しています。
select * from news_base limit このSQLはページ数に基づいて特定のデータを取得するためのものです。
ただし、前景ページでは「前のページ 1.2.3.4.5 次のページ」のページめくり効果が必要なので、それを計算するにはデータの合計を知る必要があります。ただし、SQL select * from news_base 制限ではデータの総数を取得できません。
そのため、配列を返すことができる別のSQL「select * from news_base」を記述する必要がありました。次に、計算のために長さの合計値を取得できます。
しかし、2 つの SQL は非常に冗長に感じられます。 。コードが肥大化しているように感じます。 。
ページめくり効果を実現するもっと良い方法はありますか?
フロントデスクではejsテンプレートエンジンを使用しています。
SQL selectを使用するときにcountを使用できます。関連する使用法を自分で確認してください。
合計数を取得するには、news_base から select count(*) を使用する SQL ステートメントが必要です。
最後の 2 つの SELECT が実際には 1 回だけクエリを実行することを示します
リーリーただし、SQL_CALC_FOUND_ROWS は COUNT(*) よりも遅くなります~
フィルタ条件がない場合は、リストの合計数を別途保存し、メモリにキャッシュしてからリストと一緒に吐き出すことができます。
初めてページにアクセスするときは、2 つのリクエストを行うことができます。1 つは合計数量のリクエスト、もう 1 つは制限行のリクエストです。
合計数量はページに記録されます。
後でページをめくりたい場合は、2 番目のリクエストを送信してください。
合計数量のみが必要な状況もあり、このインターフェイスの開発を別途検討する必要があります。
初期読み込みによる高いネットワーク オーバーヘッドを考慮しない場合は、すべてをローカルに直接プルして、クライアント上でページングを実行できます。