当前位置: 首页 > 面试题库 >

如何提高子查询性能?

家弘业
2023-03-14
问题内容

我有2张桌子,usersgames。用户可以有很多游戏。我需要所有有users人数的人games,以及他们的games_hosted人数(games有专栏finished的)true

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

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

问题答案:

您可以在下面尝试使用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


 类似资料:
  • 我正在数据库中运行以下查询: 它输出500行,其中只有一个结果列,运行大约需要1分钟43秒。输出以下计划: 逻辑是:对于每个选择的(在500个id的列表中)计算整数列,返回该金额与数字2147483647之间的较小值。结果必须包含500行,每个id对应一行,我们已经知道它们将与子查询中的至少一行匹配,因此不会生成空值。 索引仅是上的一个b树,属于整数类型。索引是主键上的b树,也是整数类型。表中的每

  • 问题内容: 我需要知道abt在mongo中的索引如何提高查询性能。并且当前我的数据库没有索引。如何索引现有数据库?我是否还需要创建一个仅用于索引的新字段? 问题答案: 从根本上说,MongoDB中的索引类似于其他数据库系统中的索引。MongoDB支持MongoDB集合中文档中包含的任何字段或子字段上的索引。 索引在这里详细介绍,我强烈建议您阅读本文档。 其中包括有关索引操作,策略和创建选项的部分,

  • 问题内容: 有人愿意帮助我吗?在具有10000行的MEMORY表上,以下查询大约需要18秒。如果我没有“ where”约束,则只需不到一分钟的时间。我已经打开查询缓存以及将其作为准备好的语句来尝试。有什么我可以做的吗?索引还是什么? 问题答案: 我认为这将为您提供所需的信息,而不管您关注的滚动日期范围…我已经通过创建带有两个标识列的自己的“发票”表进行了测试。使用@mySQL变量实际上非常简单,可

  • 本文向大家介绍如何提高MySQL Limit查询性能的方法详解,包括了如何提高MySQL Limit查询性能的方法详解的使用技巧和注意事项,需要的朋友参考一下 在MySQL数据库操作中,我们在做一些查询的时候总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的。其实我们可以使用Limit关键字来避免全表扫描的情况,从而提高效率。 有个几千万条记录的表 o

  • 我的Java spring应用程序中有一个原生查询,它访问oracle DB并获取一个很大的结果集(接近20000条记录)。当前的方法是,我使用spring的JdbcTemplate来执行查询,这需要大约几分钟的时间来执行查询。提高执行此查询的性能的更好方法是什么?

  • 我有大约20万张唱片要储存。我已经实现了Java客户端来从hazelcast地图中搜索记录。我没有在预期时间内得到搜索结果。 一旦我做Hazelcast喜欢或在查询,它需要最少400到500毫秒。 是否可以更改服务器端和客户端配置以提高吞吐量? 我用键值将JavaBean信息存储在Map中。我还在一个字段上创建了索引。还实现了身份序列化机制。 服务器端配置(使用XML文件设置服务器): 客户端代码