performance - 加速 postgres 查询(适用于 2 个表)

标签 performance postgresql join

我在 postgresql 中做这样的事情:

select A.first, 
       count(B.second) as count, 
       array_agg(A.second) as second,
       array_agg(A.third) as third, 
       array_agg(B.kids) as kids 
from A join B on A.first=B.second 
group by A.first;

而且要花很长时间(也因为 table 很大)。将输出限制为 10 行并查看 explain analyze 告诉我有一个嵌套循环,它很大并且占用了大部分时间。

有什么方法可以让我编写这个查询(然后我将在 CREATE TABLE AS 中使用它来创建一个新表)来加快它的速度,同时保留相同的输出,这正是我想要的?

谢谢!

最佳答案

确保将用作外键的列编入索引:

create index b_second on b(second);

如果没有这样的索引,a 的每一行都会导致 b 的表扫描,这将使您的查询爬行。

关于performance - 加速 postgres 查询(适用于 2 个表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14440090/

相关文章:

mysql - Ruby-Mysql2 编码 utf8mb4 造成索引问题(从而影响性能)

java - JRebel 在游戏开发中的应用(性能)

sql - 如何清除 SQL Server 2005/2008 中的查询执行统计信息

ruby-on-rails - 计算 rails update 中 created_at 和 now() 之间的差异

PostgreSQL如何在多个CPU之间拆分查询

内连接后MySQL主键类型变为 "index"

c++ - STL 排序对字符串 vector 与字符串指针 vector 的性能比较

java - 数据库查询错误。代码 : 42601 Message: syntax_error Cause: ERROR: syntax error at or near "<"

SQL:组合表的查询

mySQL查询: How to choose just one comment from post list?