【问题标题】:Is a MySQL JOIN with LIMIT optimized internally?带有 LIMIT 的 MySQL JOIN 是否在内部进行了优化?
【发布时间】:2012-03-20 08:41:41
【问题描述】:

community 作为id: int, name: varchar 的表。另一个表category_peoplecommunity_id: int, person_id: int。带有 LIMIT 查询的 JOIN 可能是

选择 b.user_id, group_concat(a.name SEPARATOR ',') 作为组 来自社区 加入社区_用户 b ON a.id = b.community_id GROUP BY b.user_id 限制 1000 偏移量 2000;

在这个查询中,MySQL 是否会执行任何内部优化以及 (a) 先执行限制、偏移部分,然后再连接,或者 (b) 对全表执行连接,然后获取限制、偏移窗口?

【问题讨论】:

  • EXPLAIN 说什么?

标签: mysql join query-optimization


【解决方案1】:

参考LIMIT Optimization 上的 MySQL 5.6 手册,它似乎是 (a):

“一旦 MySQL 向客户端发送了所需的行数,它就会中止查询,除非您使用 SQL_CALC_FOUND_ROWS。”

【讨论】:

  • 酷。虽然带偏移量的限制会线性增加行扫描。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 2014-09-27
  • 2017-09-07
  • 1970-01-01
相关资源
最近更新 更多