序文 実際には、次のような問題に遭遇する可能性があります。特定のレコードの ID がわかっていて、そのレコードが ID でソートおよびページ分けされている場合に、そのレコードがどのページにあるかを判断する必要があります。今日の記事はあなたにアイデアを提供します。 具体的な実装方法を見てみましょう。 IDでページング位置を照会する ID に基づいてページング位置を照会するには、たとえば、ID が逆順に並べ替えられている場合、次の SQL を使用して、この ID より大きいレコードの数を照会できます。 id > 5 のユーザーから count(id) を選択します。 この例では、user はテーブル名と、一致させる 5 桁の ID です。当然、逆順にソートされているため、この ID より大きいレコードの数を見つけるだけで済みます。昇順でソートされている場合は、この ID より小さいレコードの数を見つけるだけで済みます。 カウント値を見つけた後、現在のレコードがどのページにあるかをどのように計算しますか? 以下は Java コードの例です。 ページサイズ = 10; // 上記の結果が count で、値が 11 であると仮定します 整数カウント = 11; // 現在のレコードのpageNumを計算します // モジュラスに 1 を加えて、現在のページ番号をページ 2 として取得します。int pageNum = count/pageSize + 1; // さらに特定のページ上の特定の位置を取得したい場合は、残りの部分、つまり2ページ目の最初のレコード(0から始まる)を取得できます。 int インデックス = count%ページサイズ; 多次元ソートと配置 上記の単純な ID によるソートは、比較的簡単に解決できます。レコードをソートする次元が ID だけではない場合はどうでしょうか。たとえば、最初に年齢で逆順にソートします。年齢が同じ場合は、ID で続いて逆順にソートします。基本的な SQL ステートメントは次のとおりです。 ユーザーから id、age を age desc、id desc で並べ替えて選択します。 この時点で、ID が 5、年齢が 18 のレコードがあることがわかります。複数条件の並べ替えでこのレコードの位置をどのように決定するのでしょうか。 まず、複数条件ソートの難しさは、年齢が同じ場合にあります。年齢が異なる場合は、「ID に基づいてページング位置を照会する」と同様に、次の SQL を使用して ID の位置を特定できます。 年齢が18を超えるユーザーからcount(id)を選択します。 この方法では、組み合わせたソート年齢が異なる場合に、このレコードの位置を照会できます。特定の位置のアルゴリズムは、最初のケースと同じです。 では、年齢を重ねた場合、どのように対処すればよいのでしょうか?もちろん、これは複雑な関連クエリやサブテーブル クエリを通じて実現できます。別の方法として、現在のユーザーと同じ年齢で ID が大きいレコードの数をクエリする方法もあります。 age = 18 かつ id > 5 のユーザーから count(id) を選択します。 上記では、年齢が同じで ID が 5 より大きいレコードを取得します。最初のステップと 2 番目のステップの統計結果を追加します。問題は、「ID に基づいてページング位置を照会する」という単純なモードに戻ったのか、それとも同じアルゴリズムで現在のレコードがどのページにあるかを計算できるのかということです。 このソリューションはデータベースを 2 回クエリしますが、インデックスが適切に確立されている場合は、関連クエリやサブクエリよりも便利で簡潔かつ効率的です。 まとめ 上記は、実際に同様の問題に遭遇したときの 2 つの考え方です。これらが皆さんの突破口となることを願っています。また、皆さんがより良い解決策を提供できることを願っています。 さて、以上がこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: CentOS 7 で Python を 3.6.6 にアップグレードした後に発生する yum エラー問題の解決方法の概要
>>: ElementUI ページネーション コンポーネントの使い方 Vue でのページネーション
これは Element UI の読み込みコンポーネントのエフェクトです。かっこいいですね。実装してみ...
1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...
HTML ノードの追加と削除の簡単な例 HTML ノードの追加と削除の簡単な例<input t...
目次2. 目的2.1 オブジェクトにプロパティを追加する2.3 オブジェクトの複製2.4 複数のオブ...
この記事では、マウス追従ゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内...
インターネット経済の継続的な発展に伴い、インターネット上の専門ウェブサイト、公共サービスウェブサイト...
この記事の例では、セカンダリメニュー効果を実現するためのJSの具体的なコードを参考までに共有していま...
目次スクロールをスムーズにするBetterScrollのスクロール体験慣性ローリングエッジリバウンド...
MySQL 5.7.9 のインストールチュートリアルを録画してみんなと共有しましょう環境の紹介:オペ...
以下に、トレーニング機関からのヒントと私自身の要約をいくつか示します。以下のインデックスの内容を説明...
html <div class="totop" v-show="...
目次1. Nginxロケーションの基本設定1.1 Nginx 設定ファイル1.2 Pythonスクリ...
1: syslog.conf の概要異なるタイプの Unix の場合、標準の UnixLog システ...
最近、携帯電話で https が有効になりました。緑色のロックを取得するには、次の問題を解決する必要...
1. はじめにページを作成しているときに、複数列のレイアウトに遭遇することがあります。各列の内容が異...