所以我有3個表格:用戶,帖子,私人。在這個例子中,lizzy創建了一個私人帖子'約會',並且只希望她的女朋友在私人表中看到它'authorized_user_ids',並且在帖子表中她自己'user_id'。MySQL - Private Posts Display
users
user_id user_name
1 tony
2 steph
3 lizzy
4 adam
5 lara
6 alexa
posts
post_id user_id post_name private (0 is public, 1 is private to authorized users)
1 1 Coding 0
2 3 Dating 1
3 3 Show Me 0
private
private_id post_id authorized_user_ids
1 2 2,5,6
只有私人海報USER_ID和authorized_user_ids應該看到麗子的「約會」後,但每個人都應該能夠通過的Lizzy看到「演示」後。註銷的用戶和未經授權的用戶不應該看到任何內容。這是最有效的方式,或應該是:
private
private_id post_id authorized_user_id
1 2 2
2 2 5
3 2 6
這是我的第一個問題。我的第二個是什麼是從MySQL數據庫中提取數據時,在php(顯示到authorized_user_ids)中解決它的最好方法?我們是否根據posts表中的'private'標誌執行第二個查詢?如果它是1,我們在while循環中查詢以從私人表中獲得'authorized_user_ids',並且如果它匹配登錄用戶的$ logged_in_id,那麼我們顯示'約會'?還是應該在主查詢中使用'private_table'中的'post_id'和posts表中的'authorized _user_ids'進行連接?任何幫助如何最有效地做到這一點表示讚賞。
就有效索引而言,private_id作爲主索引,post_id作爲索引,或post_id AND authorized_user_id作爲組合索引?感謝您的快速響應順便說一句。 – Maverick
我認爲post_id和authorized_user_id上的複合索引可以工作,但如果不確定,請使用EXPLAIN從命令行運行查詢,以查看您添加的索引如何被有效使用。 –