始终进行一次数据库查询的最有效方法是什么,我知道该查询只会偶尔返回结果?
|
我正在尝试找出如何在我的网站上实施一项新功能。我的网站允许人们下载一组成员上传的内容。新功能将允许该组的1个成员成为“超级”用户,无法上传其上载内容。因此,目前我的查询(或多或少)是-
SELECT * FROM uploads WHERE group = $groupid
我在想将成员的“超级”状态存储在“成员”表中,因此在执行查询之前可能会查找此信息以获得超级成员的成员ID。
$all_group_members = SELECT members FROM groups WHERE group_id = $groupid
$super_member = SELECT memberid FROM members WHERE memberid IN ($all_group_members) AND super_status = 1
然后将查询修改为-
SELECT * FROM uploads WHERE group = $groupid AND uploader ! = $super_member
但是,在组中可能并不总是有超级成员,所以我的问题是是否有更有效的方法来做到这一点,例如将超级成员ID存储在会话cookie中?如何将超级用户ID存储在组表中-仍然涉及执行查询-
SELECT super_user FROM groups WHERE groupid = $group_id
但是,至少要少一个查询。
难道这没有办法-我知道大约只有5%的时间会有一个超级用户,因此95%的时间将浪费查询。可能会话cookie可以存储group_has_super_user变量。
还有其他方法可以做到吗?
谢谢
没有找到相关结果
已邀请:
2 个回复
襄挟款籍
另外,如果成员资格正在更改(例如,其他人获得了超级权限),则应在组中重新计算这些标志。 不要忘记为groupid +可下载(或可下载+ groupid)创建索引(或将主键设置为index)!
郡晒景沧