0

我有两张表,一张保存用户信息(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

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

4

1 回答 1

0

一个索引 where 子句解决了这个问题。

于 2012-08-14T02:56:58.763 回答