gpt4 book ai didi

SQL 检查用户关系是否存在

转载 作者:行者123 更新时间:2023-11-29 05:43:14 25 4
gpt4 key购买 nike

我设置了一个如下所示的用户关系表。

用户关系

  • relationship_id
  • requesting_user_id
  • requested_user_id
  • 关系类型
  • 关系状况

现在说我想检查一个关系,看看它是否存在于两个用户之间,让我们说这个例子是 ID 1 和 2。我可以做一个:

SELECT * 
FROM user_relationship
WHERE (requesting_user_id='1' AND requested_user_id='2')
|| (requesting_user_id='2' AND requested_user_id='1')

但我想知道他们是否是一种更好更快的方法?

最佳答案

OR 是出了名的糟糕表现。您可以尝试使用 UNION:

SELECT a.* 
FROM USER_RELATIONSHIP a
WHERE a.requesting_user_id = '1'
AND a.requested_user_id = '2'
UNION
SELECT b.*
FROM USER_RELATIONSHIP b
WHERE b.requesting_user_id = '2'
AND b.requested_user_id = '1'

UNION 将删除重复项; UNION ALL 不会(而且速度更快)。

如果有任何您不使用的返回列 - 它们不应该出现在查询中。

索引应该是:

  • requesting_user_id
  • requested_user_id

...单独或单个复合索引,但您必须进行测试才能知道哪种效果最好。

关于SQL 检查用户关系是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795993/

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