gpt4 book ai didi

MySQL – select – max – group by – 效率

转载 作者:行者123 更新时间:2023-11-30 01:37:02 25 4
gpt4 key购买 nike

我有一个关于 MySQL DBMS 性能的问题。或许是一件小事。有两个表,我需要得到如下结果:

     PLAYERS                           VISITS
ID | PLAYER_NAME ID | PLAYER_ID | SEEN
---------------- ---------------------------
1 | user 1 1 | 2 | 2012-12-12
2 | user 2 2 | 2 | 2012-12-13
3 | user 3 3 | 3 | 2012-12-13
4 | user 4 4 | 3 | 2012-12-14
5 | 3 | 2012-12-14
6 | 2 | 2012-12-15
RESULT:
ID | PLAYER_NAME | LAST_SEEN
----------------------------
1 | user 1 | NULL / 'NEVER'
2 | user 2 | 2012-12-15
3 | user 3 | 2012-12-14
4 | user 4 | NULL / 'NEVER'

我当前的查询是:

   SELECT 
players.id,
players.player_name,
MAX(visits.seen) AS last_seen
FROM players
LEFT JOIN visits ON players.id = visits.player_id
GROUP BY players.id,players.player_name

对我有用,但在我看来,这应该是一种更有效的方法。

这只是更大查询的关键部分。

托马斯

最佳答案

为了使此连接高效,VISITS 中必须有 player_id 的索引。调查一下

`CREATE INDEX` 

这里。

要检查查询效率,您可以随时使用:

EXPLAIN SELECT /* your select here */

此外,如果 PLAYERS.ID 是唯一的主键,那么仅按此 id 进行分组就完全没问题。

SELECT 
players.id,
players.player_name,
MAX(visits.seen) AS last_seen
FROM players
LEFT JOIN visits ON players.id = visits.player_id
GROUP BY players.id

但是你原来的查询完全没问题。确保您完全理解 GROUP BY 以及如果省略列则未包含在 GROUP BY 中的列的后果。这可能会在其他查询中产生意想不到的后果(即相同的 id 并不意味着相同的名称)

关于MySQL – select – max – group by – 效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16744112/

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