gpt4 book ai didi

mysql - 将 mysql 查询拆分为两个以避免 join -> sum ids 并使用 where in

转载 作者:行者123 更新时间:2023-11-29 13:15:22 24 4
gpt4 key购买 nike

什么更快:

使用联接获取帖子的用户详细信息或仅获取包含用户 ID 的帖子数据,收集用户 ID,并在查询帖子后运行一个:

从用户中选择 x,y,z,其中 id 位于(1,2,3,4,5,6,7...等)

简短:

什么更好?:

SELECT x,y,z,userid 
FROM posts
WHERE id > x
ORDER BY id
LIMIT 20

SELECT x,y,z
FROM users
WHERE id IN (1,2,3,4,5,6,7...etc.)

或者:

SELECT p.x,p.y,p.z, u.username,u.useretc,u.user.etc 
FROM posts p
INNER JOIN users u
ON u.id = p.userid
AND id > n
ORDER BY id
LIMIT 20

在某些情况下,这可能会将用户表的查询次数减少到 2 次,而不是 20 次。讨论中只有两个用户发帖的页面。

最佳答案

无论如何,第二种方法更好:

  1. 您只有一次对数据库的调用,而不是两次 - 因此数据库和应用程序服务器之间的 channel 负载较少
  2. 第二种方式通常应该更快且消耗更少的内存,因为分析器可以更好地决定如何管理其资源(它在一个查询中满足所有要求)
  3. 在第一个示例中,您强制数据库使用未缓存的查询(第一个示例的第二个查询不是恒定的,因为列表中的输入量不同),因此它会更频繁地解析第二个查询,这会导致性能损失<

关于mysql - 将 mysql 查询拆分为两个以避免 join -> sum ids 并使用 where in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21526085/

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