我有两张表,一张保存用户信息(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
知道如何编写查询以分别获得与每个查询相同的性能吗?