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

优化MySql查询:订购时太慢

优化MySql查询:订购时太慢

不要将Order By放入主查询中,而是将其包装起来,如下所示:

SELECT * FROM (   
  ... your query
) ORDER BY `created at`

看一下查询计划。您会发现,在这种情况下,将在执行mtrt_items外部联接之前在表上执行排序。在我提供的部分重写中,排序是在外部联接之后应用的,并且在更小的集合上应用。

假设将LIMIT应用于大型集合(500,000?),您似乎可以在执行任何联接之前执行顶部操作。

SELECT * from (
    SELECT 
    `id`, ... `created_at`, ...
    ORDER BY `i`.`created_at` DESC 
    LIMIT 100 OFFSET 0) as i

    LEFT JOIN `mtrt_users` AS `u` ON i.user_id =u.id

    LEFT JOIN `twt_tweets_content` AS `t` ON t.id =i.id
    LEFT JOIN `twt_users` AS `tu` ON t.user_id = tu.id

    INNER JOIN `mtrt_items_searches` AS `r` ON i.id =r.item_id
    INNER JOIN `mtrt_searches` AS `s` ON s.id =r.search_id
    INNER JOIN `mtrt_searches_groups` AS `sg` ON sg.search_id =s.id
    INNER JOIN `mtrt_search_groups` AS `g` ON sg.group_id =g.id
    INNER JOIN `account_clients` AS `c` ON g.client_id =c.id

GROUP BY i.id
MySQL 2022/1/1 18:48:24 有247人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

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

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

请先登录

推荐问题


联系我
置顶