ホームページ > バックエンド開発 > PHPチュートリアル > MySQL がテーブルに分割された後にページネーションする方法 (合計 160 のテーブルと 1,500 万のデータ)

MySQL がテーブルに分割された後にページネーションする方法 (合計 160 のテーブルと 1,500 万のデータ)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 13:40:52
オリジナル
2236 人が閲覧しました

MySQL をテーブルに分割すると、160 のテーブルと 1,500 万のデータが存在します。 ページング リストを作成するにはどうすればよいですか?
以前は、union all を使用して 160 のテーブルの結果セットをマージしたいと考えていました。 。ただし、カードから直接データを取得することはできません。 。
ここでページネーションを行う方法を教えてください、ありがとう~~~


ディスカッションへの返信(解決策)

サブテーブルを自分で作成したということですが、サブテーブルの条件は何ですか?
ページング結果がテーブル分割条件でスコープできない場合、テーブル分割は失敗しています

Union が使用できないという意味ではありませんが、Union はすべてではなく、テーブル分割条件でフィルタリングされたテーブルの一部です

サブテーブルをご自身で作成されたということですが、サブテーブルの条件は何ですか?
ページング結果がテーブル分割条件でスコープできない場合、テーブル分割は失敗しています

Union が使用できないわけではありませんが、Union はすべてではなく、テーブル分割条件でフィルタリングされたテーブルの一部です



こんにちは、モデレーター Xu です。私のテーブルのデータの主なフィールドは URL アドレスです。ドメイン名に基づいて 1,600 のドメイン名があります。

サブテーブルをご自身で作成されたということですが、サブテーブルの条件は何ですか?
ページング結果がテーブル分割条件でスコープできない場合、テーブル分割は失敗しています

Union が使用できないわけではありませんが、Union はすべてではなく、テーブル分割条件でフィルタリングされたテーブルの一部です



私の SQL ステートメントは次のようなものです (フィールドはそれほど多くなく、便利な場合に * 記号が使用されています):

自分でテーブルを作成したので、テーブルの条件は何ですか?
ページング結果がテーブル分割条件でスコープできない場合、テーブル分割は失敗しています

Union が使用できないわけではありませんが、Union はすべてではなく、テーブル分割条件でフィルタリングされたテーブルの一部です


私SQL ステートメントは次のようになります (フィールドが少なく、それらがすべて有用な場合は、* 記号を使用します):
select * from t1 Union all select * from t2 Union all select * from t3....union all select * t160 より

テーブルをドメイン名で分割するので、ドメイン名でも検索することになります。このように、ドメイン名がテーブルにない場合、このテーブルは検索に参加する必要がないと考えられます。 、検索範囲は大きく縮小されませんか?

テーブルに複数の異なるドメイン名が含まれている場合、特定のタイプのドメイン名が特定のテーブルにあることを示すディレクトリ テーブルを構築する必要があります
取得するときは、まずディレクトリ テーブルをチェックして、どのテーブルに含まれる可能性があるかを取得します。そして、これらのテーブル内を検索します テーブル内を検索します

mysql が提供するサブテーブル関数を使用すると、はるかに簡単になります

ドメイン名でサブテーブルを作成しているため、ドメイン名で検索することになります

ドメイン名がテーブルに存在しない場合、このテーブルは検索に参加する必要がないことは想像できます

このようにして、検索範囲は大幅に縮小されませんか?

テーブルに複数の異なるドメイン名が含まれている場合、特定のタイプのドメイン名が特定のテーブルにあることを示すディレクトリ テーブルを構築する必要があります
取得するときは、まずディレクトリ テーブルをチェックして、どのテーブルに含まれる可能性があるかを取得します。そして、これらのテーブル内を検索します テーブル内を検索します

mysql が提供するサブテーブル関数を使用すると、より簡単になります

ドメイン名とテーブル名の対応関係を作成しましたが、今度はこのページング リストを開くと、すべてのテーブルのすべてのドメイン名が表示されます。データは、特定のドメイン名や特定のテーブルではなく、ページ分割されます。



特別な並べ替え条件はありますか?そうでない場合は、必要なデータをテーブルごとに直接読み取ります。

特別な並べ替え条件はありますか?そうでない場合は、必要なデータをテーブルごとに直接読み取ります。

並べ替えはなく、すべてのデータをリストするだけです。160 のテーブルに 1,500 万のデータがあり、ページ分割する必要があります。 。 。表ごとに読み込むことはできないのでしょうか? !

全体的なページング表示が提供されていれば、より簡単になります
1. 各テーブルのレコード数はわかっているので、変更が発生するたびにディレクトリ テーブルに記録する必要があります
2. ソートされているかどうかに関係なく(ソートの場合)はテーブルの順序のみ) 異なる) サブテーブルの結合は最大 2 つになります

サブテーブルが 3 つの場合、レコード数はそれぞれ 90、120、80 となり、合計レコード数は 290 になります
ページングで 1 ページあたり 40 項目を表示すると仮定すると、
ページ 1 表 1 1 ~ 40
ページ 2 表 1 41 ~ 80
ページ 3 表 1 81 ~ 90 + 表 2 1 ~ 30
ページ 4 表 2 31 ~ 70
Page 5 表 2 71 ~ 110
Page 6 表 2 の 111 ~ 120 + 表 3 の 1 ~ 30
.....
計算は非常に簡単です




偶数になります全体的なページング表示が行われるとより簡単になります
1. 各テーブルのレコード数はわかっているので、変更が発生するたびにディレクトリテーブルに記録する必要があります
2. ソートされているかどうかに関係なく(ソートが順序のみの場合)テーブルの合計)、サブテーブルの結合は最大 2 つになります
合計 3 つのサブテーブルがあると仮定すると、レコードの数はそれぞれ 90、120、80 になります。レコードの合計数は 290 になります。
ページングがあると仮定します。 1 ページあたり 40 項目を表示する場合、
ページ 1 表 1 の 1 ~ 40
ページ 2 表 1 の 41 ~ 80
ページ 3 表 1 の 81 ~ 90 + 表 2 の 1 ~ 30
ページ 4 31 ~ 70表 2
ページ 5 表 2 から 71 ~ 110
ページ 6 表 2 から 111 ~ 120 + 表 3 1 ~ 30
.....
計算は非常に簡単です

モデレーター Xu、辛抱強く答えていただきありがとうございます。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート