如何提高子查询性能?

时间:2019-03-03 03:47:07

标签: sql postgresql

我有2个表,usersgames。用户可以有很多游戏。我需要所有拥有users的{​​{1}},以及他们的games计数(games_hosted,其中有gamesfinished列。

P.S。我需要将所有数据加载到管理表中。由于游戏太多。我决定对数据进行分页和限制。但是,甚至限制以下查询也需要花费相同的时间。如何更好地查询呢?

true

1 个答案:

答案 0 :(得分:0)

您可以在下面尝试使用case when表达式

select "uid", "username", count(case when state = 'finished' then id end) as games_hosted 
from "users" inner join "games" 
on "games"."user_uid" = "users"."uid" 
where "games"."state" in ('published', 'finished') and "username" < 'HariShankar' 
group by "uid", "username"
order by "username" desc 
limit 10