私は、類似のフォーマットのデータを含む一連のテーブルを持っています。私。 UNION
が有効です。 概念的には、1つのテーブルを複数のテーブルに分割して考えることができます。 これらのすべてのテーブルからデータをソートする必要があります。
問題は、データがあまりにも多く表示されすぎてユーザーに一度に表示されないようにするためです。ページを部分的に表示する必要があります。
私の問題は、(すでに述べたように)ソートされたデータを表示する必要があることです。複数のテーブルからデータを効率的にマージする方法
だから私のような何かを行う場合:
SELECT FROM TABLE_1
UNION
SELECT FROM TABLE_2
UNION
....
SELECT FROM TABLE_N
ORDER BY COL
LIMIT OFFSET, RECORDS;
私は常にUNION
とORDER BY
は、例えば得るためにやっているだろう各リクエストのページの対応する50レコードのみ。
これを最も効率的に処理するにはどうすればよいですか? (デビッド・スターキーの巧妙な提案に基づく)
(SELECT FROM table_1 ORDER BY col LIMIT @offset, @records)
UNION
...
(SELECT FROM table_N ORDER BY col LIMIT @offset, @records)
ORDER BY col LIMIT @offset, @records
上記不足が判明した場合、私は手動でインデックステーブルを構築します:
一時テーブルにデータを選択して、ページ番号などの列を追加できますか? –
@DavidStarkey:ルックアップテーブルのようなものを作成しますか? – Cratylus
本質的には、はい。 –