3つのエンティティがあります- articles
、、journals
およびsubscribers
。データベースへのデータの保存方法に制限はありません。同じ記事を複数のジャーナルに同時に掲載することができます。
購読されているジャーナルから、発行日で並べ替えられた、繰り返しのないすべての発行済み記事を選択するにはどうすればよいですか?
最も簡単な方法:
記事を含むテーブルを作成し ます:投稿
p_id
、、、、j1_id
j2_id
text
date
サブスクリプションを使用してテーブルを作成します: follows
f_id
、、(u_id —テーブルusersのユーザーIDです)u_id
j_id
実行する:
クエリ例
select posts.* from posts inner join follows on (j_id = j1_id or j_id
= j2_id) where u_id = 1 order by date desc
このクエリは、重複するデータを返します。メカニズムDISTINCT
またはを使用できますGROUP BY
が、重複を削除するための追加の並べ替え操作が作成されます。
もう1つの方法は、メカニズムを使用して実行できますが、。UNION
も使用しDISTINCT
ます。
(select posts.* from posts inner join follows on j_id = j1_id where u_id = 1)
union
(select posts.* from posts inner join follows on j_id = j2_id where u_id = 1)
order by date desc
おそらく、私は自分のやり方で間違ったストレージ構造を選択しました。
実際の質問ですが、ビッグデータに必要な時間を最小限に抑えるために、この問題について何かを行うことは可能ですか?