gpt4 book ai didi

php - 始终进行数据库查询的最有效方法是什么,我知道它只会偶尔返回结果?

转载 作者:行者123 更新时间:2023-11-29 02:35:31 28 4
gpt4 key购买 nike

我正在尝试研究如何在我的网站上实现一项新功能。我的站点允许人们下载群组成员上传的内容。新功能将允许该组的 1 名成员成为无法下载上传内容的“ super ”用户。所以目前我的查询(或多或少)是 -

SELECT * FROM uploads WHERE group = $groupid

我想我会将成员的“ super ”状态存储在“成员”表中,因此在执行查询之前可能会查找此表以获取 super 成员的成员 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

然而,组中可能并不总是有 super 成员,所以我的问题是是否有更有效的方法来做到这一点,例如将 super 成员 ID 存储在 session cookie 中?将 super 用户 ID 存储在组表中怎么样 - 仍然涉及执行查询 -

SELECT super_user FROM groups WHERE groupid = $group_id 

但至少少了一个查询。

有没有办法解决这个问题 - 我知道只有大约 5% 的时间会有 super 用户,所以 95% 的时间这将被浪费在查询上。也许 session cookie 可以存储一个 group_has_super_user 变量。

我还缺少其他方法吗?

谢谢

最佳答案

我想,其他组成员不能从我组的东西中下载任何东西。因此,只需将 downloadable 字段添加到 uploads,并将其设置为

  • 1,如果是普通成员(member)上传的,或者
  • 0,如果 super 成员(member)有。

那么您必须运行的唯一查询是:

SELECT * FROM uploads WHERE group = $groupid AND downloadable != 0

此外,如果成员资格发生变化(例如,其他人获得 super 权利),则应在组中重新计算这些标志。

不要忘记为 groupid + downloadable(或 downloadable + groupid)创建索引(或将主键设置为)!

关于php - 始终进行数据库查询的最有效方法是什么,我知道它只会偶尔返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5661635/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com