首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子查询显著减慢了查询速度

子查询显著减慢了查询速度
EN

Stack Overflow用户
提问于 2016-12-21 11:35:18
回答 0查看 32关注 0票数 0

我正在尝试执行一个查询来替换多个查询,以生成一个结果集。我得到了一组相当简单的1对1连接,但我试图从一个表中获取一个列,该表为每个主记录保留多个记录。基本上是这样的:

具有一个主键id列和一组其他列meet_entries_statuses的meet_entries,该列具有一个自动增量id列和一个指向meet_entry的id列的外键

对于meet_entries中的每一行,meet_entry_statuses中可能有多行。在我的查询中,我尝试获取与meet_entry主键id相关联的最近添加的行(即最高id号)。

下面是我的问题:

代码语言:javascript
复制
SELECT
  meet_entries.id,
  member.firstname,
  member.surname,
  member.gender,
  member.dob,
  clubs.code,
  clubs.clubname,
  meet_entries.meals,
  meet_entries.massages,
  meet_entries.cost,
  meet_entries.cancelled,
  (SELECT meet_entry_status_codes.description
  FROM meet_entry_statuses, meet_entry_status_codes
  WHERE meet_entry_statuses.code = meet_entry_status_codes.id
  AND meet_entry_statuses.id = meet_entries.id
  ORDER BY meet_entry_statuses.id DESC
  LIMIT 1) as status,
  COUNT(DISTINCT meet_events_entries.id) as entries
FROM meet_entries, meet_events_entries, member, clubs, meet_entry_statuses, meet_entry_status_codes
WHERE meet_entries.meet_id = ?
  AND meet_entries.id = meet_events_entries.meet_entry_id
AND meet_entries.member_id = member.id
AND meet_entries.club_id = clubs.id
GROUP BY meet_entries.id
;

添加比特:

代码语言:javascript
复制
(SELECT meet_entry_status_codes.description
FROM meet_entry_statuses, meet_entry_status_codes
WHERE meet_entry_statuses.code = meet_entry_status_codes.id
AND meet_entry_statuses.id = meet_entries.id
ORDER BY meet_entry_statuses.id DESC
LIMIT 1) as status,

使查询从一秒钟的.2变成永远不会结束。在meet_entries中只有10个匹配的行。meet_entries_statuses中大约有50行与meet_entries中的10行相对应,但正如我所说的,我尝试为每一个meet_entries行只获取1行。有什么建议可以更好地做到这一点?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41254667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档