我有一个查询从四个不同的表中获取信息,并将它们全部加入。这些表格是'公会','行会会员','公寓'和'用户'。查询我有工作,但我只是想知道它的效率,如果它可以做得更快。MySQL查询优化(使用COUNT和JOIN)
我的意思是,目前它工作正常,速度很快,但guilds_memberships内部没有太多数据,它是COUNTED()'d。我正在使用的查询如下所示。 (总是会有至少1记录guilds_memberships,单位和用户内部的每个行会顺便说一句,如果要与所有优化(无理由来检查空值)帮助)
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
感谢您的快速回答。 u.username永远不会改变,公会不能交换,只能被删除。因此,在一个公会的存在中,u.username总是相同的,尽管f.FlatName是可以改变的,但你说的很对,它很少会被改变。 我会记住你对使用memcache所说的话。未来可能证明有用。 – DominicEU 2011-12-27 16:52:42