MySQL将两个查询与group by合并

时间:2012-08-10 17:55:55

标签: mysql

我有两个表,一个包含用户信息(id,name等),另一个表包含用户票证和票证状态(ticket_id,user_id,ticket_status等)。

我想生成所有用户的列表,例如:( SELECT * FROM user_table )

对于每个用户,我需要计算他们的票数,例如: (SELECT t1.user_id, COUNT(*) FROM user_tickets t1 WHERE t1.ticket_status = 15 GROUP BY t1.ticket_status, t1.user_id )

我可以执行此查询以实现我正在寻找的内容,但需要5秒。在50000票证上运行查询,而每个单独运行的查询只需要几分之一秒。

SELECT t1.user_id, COUNT(*) 
FROM user_tickets t1 
LEFT JOIN user_table t2 ON t1.user_id = t2.id 
WHERE t2.group_id = 20 AND t1.status_id = 15 
GROUP BY t1.status_id, user_id

知道如何编写查询以获得与每个查询相同的性能吗?

1 个答案:

答案 0 :(得分:0)

索引where子句修复了问题。