您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

第一次订购-然后是GROUP BY

第一次订购-然后是GROUP BY

但这对每一行都执行子查询,并且效率很低

首先,您是否有一个证明这一点的查询计划/时间安排?您完成操作的方式(使用子选择)几乎是执行操作的“直观”方式。许多DBMS(尽管我不确定MysqL)都针对这种情况进行了优化,并且将只能执行一次查询

另外,您应该能够仅使用一个(user id, latest email id)元组创建一个子表,并JOIN在其上:

SELECT 
  users.userId
, users.username
, userEmail.email
FROM users
INNER JOIN 
      (SELECT userId, MAX(emailId) AS latestemailId
       FROM userEmail GROUP BY userId)
      AS latestemails
      ON (users.userId = latestemails.userId)
INNER JOIN userEmail ON
      (latestemails.latestemailId = userEmail.emailId)
ORDER BY users.username;
其他 2022/1/1 18:35:58 有433人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶