5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【MySQL】下らねぇ質問はID出して書き込みやがれ 2

11 :NAME IS NULL:2011/12/06(火) 17:04:21.54 ID:???
SNSの個人設定で、以下のような日記の公開範囲設定があります。
※「○月○日の日記を公開するかどうか」ではなく、そのユーザーの日記全体の設定です。
5.インターネット全体に公開
4.SNSユーザー全員に公開
3.友達の友達にまで公開
2.友達にだけ公開
1.非公開

ここで、特定のサイト訪問者が閲覧できる日記だけを、記事単位で最新10件分取得したい場合、
どのようなSQLを書くのがスマートでしょうか。

いまは、最初に上記の公開範囲テーブルから「閲覧できるユーザーID」を全取得して、
日記を select するときに where user_id in(1,2,3,5,6,8,9,10,11,13,...) などとやってて、
パフォーマンスがだいぶ悪いです。

そこで、手段を変えて、次のようにひとつのクエリで取得しようとしたら、もっと悪化しました。
where
(private.diary = 5) or
(private.diary = 4 and ログインしてるかどうか) or
(private.diary = 3 and 友達の友達かどうかのサブクエリ) or
(private.diary = 2 and 友達かどうか) or
(private.diary = 1 and 自分かどうか)

5 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)