3つのエンティティがあります- articles、、journalsおよびsubscribers。データベースへのデータの保存方法に制限はありません。同じ記事を複数のジャーナルに同時に掲載することができます。
購読されているジャーナルから、発行日で並べ替えられた、繰り返しのないすべての発行済み記事を選択するにはどうすればよいですか?
最も簡単な方法:
記事を含むテーブルを作成し ます:投稿
p_id、、、、j1_idj2_idtextdateサブスクリプションを使用してテーブルを作成します: follows
f_id、、(u_id —テーブルusersのユーザーIDです)u_idj_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
おそらく、私は自分のやり方で間違ったストレージ構造を選択しました。
実際の質問ですが、ビッグデータに必要な時間を最小限に抑えるために、この問題について何かを行うことは可能ですか?