所以我有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从命令行运行查询,以查看您添加的索引如何被有效使用。 –