gpt4 book ai didi

MySQL 查询优化(使用 COUNT 和 JOIN)

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

我有一个查询,它从四个不同的表中获取信息,并将它们全部连接起来。这些表是“guilds”、“guilds_memberships”、“flats”和“users”。我的查询有效,但我只是想知道它的效率以及是否可以使其更快。

我的意思是,目前它运行良好且速度很快,但 guilds_memberships 内部没有太多数据,并且正在 COUNTED() 中。我正在使用的查询如下所示。 (顺便说一句,guilds_memberships、公寓和用户中的每个公会始终至少有 1 条记录,如果这对优化有帮助的话(没有理由检查 NULL))

SELECT g.id, g.roomid, g.ownerid, g.roomid, g.state, g.name, g.description, g.badgestring, g.primarycolour, g.secondarycolour, g.created, u.username, f.FlatName, COUNT( m.guildid ) AS Members
FROM guilds g
INNER JOIN users u ON u.id = g.ownerid
INNER JOIN flats f ON f.FlatID = g.roomid
INNER JOIN guilds_memberships m ON m.guildid = g.id
WHERE g.id =1
LIMIT 0 , 30

最佳答案

嗯,我不认为你可以做一些事情来极大地提高这个查询的性能。它看起来不错,甚至性能也很棒。

但是,如果它开始表现不佳,我会采取以下步骤:

  1. 将此查询分成几部分。在一个查询中检索行会信息,在另一个查询中检索用户信息等。让应用程序代码执行加入操作。

  2. 缓存可缓存的内容。我敢打赌,u.usernamef.FlatName 不会经常更改,因此您可以加载它们一次并保留在内存(或 memcached)中。

这些更改的目的是减轻数据库的负载。应用程序服务器(通常)扩展起来很简单,只需启动更多的工作人员即可。另一方面,数据库是最难扩展的组件之一。

关于MySQL 查询优化(使用 COUNT 和 JOIN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646880/

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