【问题标题】:Query design, temporary table? MySQL查询设计,临时表? MySQL
【发布时间】:2012-03-13 07:06:57
【问题描述】:

我有两个表,用户和事件,我想选择例如来自 USERS 表的 6 个用户,并按事件日期的时间顺序列出他们的所有事件

餐桌设计:

USERS               EVENTS
user_id    >>>>     user_id
                    event_title
                    event_date

我是否将所有事件选择到一个临时表中,然后使用“order by”进行查询,还是在查询本身中有更有效的方法来执行此操作?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    这将从您的用户表中选择六个任意用户并获取他们的所有事件:

    SELECT user_id, event_title, event_date
    FROM EVENTS
    WHERE user_id IN
    (
        SELECT user_id
        FROM USERS
        LIMIT 6
    )
    ORDER BY event_date
    

    您应该更改子选择以根据您所需的条件选择六个特定用户,而不是 MySQL 找到的前六个。

    您应该添加索引以确保其有效运行。使用EXPLAIN SELECT ... 检查正在使用哪些索引。

    【讨论】:

      猜你喜欢
      • 2012-12-15
      • 2015-01-20
      • 2018-08-03
      • 2014-04-30
      • 2013-02-27
      • 2013-08-09
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      相关资源
      最近更新 更多