mysql - 另一个表中的最新相关条目

标签 mysql sql

我有一个用户表(1,000 条)和一个用户消息表(100,000 条)。我想要一种快速获取所有用户及其最新消息的方法。

我目前使用的是......

SELECT 
   u.id, u.name, 
   (
      SELECT note FROM msgs 
      WHERE msgs.uID=u.id 
      ORDER BY created_date DESC
      LIMIT 1
   ) as note
FROM users u

现在,如果我将其限制为 20 个用户,则需要 2.5 秒……200 个用户需要 45 秒。

(我已经在 msgs.uID 和 msgs.created_date 上有一个 INDEX。)

我做错了什么?我需要更快更快的查询。

最佳答案

我在发帖前搜索过(没有运气),但找到了this solution发布后立即出现在“相关”侧栏中。

SELECT    u.id, u.first_name, msgs.note
FROM      users u
JOIN      (
              SELECT    MAX(created_date) max_date, user_id 
              FROM      msgs 
              GROUP BY  user_id
          ) msgs_max ON (msgs_max.user_id = u.id)
JOIN      msgs m ON (msgs.created_date = msgs_max.max_date AND u.id = msgs.user_id)

好得多,但在我的 table 上仍然大约 1.3 秒。 MySQL 不能做得更快吗?

关于mysql - 另一个表中的最新相关条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28354349/

相关文章:

mysql - JOIN、GROUP BY、SUM 问题 Mysql

mysql - 如何在 mysql 5.7 中使用 sum over partition (without window function)

java - 如何在 opensuse 上连接到 mysql localhost?

mysql - SQL查询,主键转多个外键

php - 如何使用 php/Mysql 动态更改 CSS 样式..我想创建每个用户独有的主题?

mysql - SQL:查询多个表,仅查询一个表的最新结果,查询另一个表的所有结果

Python解析SQL并查找关系

sql - WHERE 子句中的引用别名

java - 为什么当我尝试在数据库中插入新对象时出现错误?

php - MySQL PHP 不兼容