左联接的Group_Concat变慢。我也需要左表中的所有行

伊姆兰·拉希德(Imran Rashid)
SELECT applicant.id, applicant.firstname, applicant.lastname, applicant.state, applicant.mobile, applicant.lead_description, GROUP_CONCAT(note.note SEPARATOR ', ') as notes
FROM applicant LEFT JOIN
     note
     ON applicant.id = note.applicant_id
WHERE delete_type = 0 AND applicant.type = 0
GROUP BY applicant.id
ORDER BY applicant.id DESC

2个表的结果太慢。

戈登·利诺夫(Gordon Linoff)

这是您的查询:

SELECT a.id, a.firstname, a.lastname, a.state, a.mobile, a.lead_description,
       GROUP_CONCAT(n.note SEPARATOR ', ') as notes
FROM applicant a LEFT JOIN
     note n
     ON a.id = n.applicant_id
WHERE delete_type = 0 AND a.type = 0
GROUP BY a.id
ORDER BY a.id DESC

您应该从索引开始。我建议applicant(type, id)note(applicant_id)并包括其中delete_type一个(我不知道它来自哪个表)。

其次,使用相关子查询可以使此查询更快。看起来像:

SELECT a.id, a.firstname, a.lastname, a.state, a.mobile, a.lead_description,
       (select GROUP_CONCAT(n.note SEPARATOR ', ')
        from note n
        where a.id = n.applicant_id
       ) as notes
FROM applicant a
WHERE delete_type = 0 AND a.type = 0
ORDER BY a.id DESC

条件delete_type位于外部查询或子查询中-尚不清楚它来自哪个表。

这样可以避免group by外部数据过大,从而可以提高性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

左联接不返回左表中的所有行

来自分类Dev

左联接,左表中没有重复的行

来自分类Dev

如何左联接表不保留左表中的所有记录?

来自分类Dev

如何使用GROUP_CONCAT()排除没有相关行的联接表

来自分类Dev

SQL左联接,group_concat返回重复数据

来自分类Dev

在左联接上选择group_concat vs group_concat

来自分类Dev

在MySQL中具有多个联接的group_concat

来自分类Dev

左联接不返回其他表的所有行

来自分类Dev

在左联接中未从表A中获取所有记录

来自分类Dev

MySQL GROUP_CONCAT()将所有行分组

来自分类Dev

有数据时联接三个表+ GROUP_CONCAT +第一个表的所有其余部分

来自分类Dev

如何编写一个SQL查询左联接2个表,该表列出左表中的所有条目,但仅列出一次?

来自分类Dev

来自JOIN子句和GROUP_CONCAT的MySQL LIKE仅返回联接表的一行

来自分类Dev

如何获得带有group by子句的左联接以返回所有行?

来自分类Dev

SQL查询,多个左联接和嵌套查询的Group_Concat

来自分类Dev

Sqlite查询,多个左联接和嵌套查询的Group_Concat

来自分类Dev

SQL查询,多个左联接和嵌套查询的Group_Concat

来自分类Dev

MySQL group_concat与联接

来自分类Dev

SQL从左表中获取左联接值

来自分类Dev

交叉表中的Group_Concat

来自分类Dev

GROUP_CONCAT,具有FIND_IN_SET,多个联接

来自分类Dev

GROUP_CONCAT,具有FIND_IN_SET,多个联接

来自分类Dev

Mysql在使用GROUP_CONCAT的联接中重复的值

来自分类Dev

Mysql在使用GROUP_CONCAT的联接中重复的值

来自分类Dev

消除 GROUP_CONCAT 中的重复行

来自分类Dev

SQL查询在左联接中没有匹配的行时获取所有行

来自分类Dev

SQL group_by和group_concat(如果组中存在所有值)

来自分类Dev

MySQL GROUP_CONCAT 具有相同的所有值

来自分类Dev

如果联接表中没有任何内容,则从左表事件获取所有信息

Related 相关文章

  1. 1

    左联接不返回左表中的所有行

  2. 2

    左联接,左表中没有重复的行

  3. 3

    如何左联接表不保留左表中的所有记录?

  4. 4

    如何使用GROUP_CONCAT()排除没有相关行的联接表

  5. 5

    SQL左联接,group_concat返回重复数据

  6. 6

    在左联接上选择group_concat vs group_concat

  7. 7

    在MySQL中具有多个联接的group_concat

  8. 8

    左联接不返回其他表的所有行

  9. 9

    在左联接中未从表A中获取所有记录

  10. 10

    MySQL GROUP_CONCAT()将所有行分组

  11. 11

    有数据时联接三个表+ GROUP_CONCAT +第一个表的所有其余部分

  12. 12

    如何编写一个SQL查询左联接2个表,该表列出左表中的所有条目,但仅列出一次?

  13. 13

    来自JOIN子句和GROUP_CONCAT的MySQL LIKE仅返回联接表的一行

  14. 14

    如何获得带有group by子句的左联接以返回所有行?

  15. 15

    SQL查询,多个左联接和嵌套查询的Group_Concat

  16. 16

    Sqlite查询,多个左联接和嵌套查询的Group_Concat

  17. 17

    SQL查询,多个左联接和嵌套查询的Group_Concat

  18. 18

    MySQL group_concat与联接

  19. 19

    SQL从左表中获取左联接值

  20. 20

    交叉表中的Group_Concat

  21. 21

    GROUP_CONCAT,具有FIND_IN_SET,多个联接

  22. 22

    GROUP_CONCAT,具有FIND_IN_SET,多个联接

  23. 23

    Mysql在使用GROUP_CONCAT的联接中重复的值

  24. 24

    Mysql在使用GROUP_CONCAT的联接中重复的值

  25. 25

    消除 GROUP_CONCAT 中的重复行

  26. 26

    SQL查询在左联接中没有匹配的行时获取所有行

  27. 27

    SQL group_by和group_concat(如果组中存在所有值)

  28. 28

    MySQL GROUP_CONCAT 具有相同的所有值

  29. 29

    如果联接表中没有任何内容,则从左表事件获取所有信息

热门标签

归档