下面的SQL查询执行大约需要6-7分钟,它将返回~5833135行,有什么可以帮助我解决它的性能问题吗
下面的SQL查询执行大约需要6-7分钟,它将返回~5833135行,有什么可以帮助我解决它的性能问题吗 SQL下面的SQL查询执行大约需要6-7分钟,它将返回~5833135行,有什么可以帮助我解决它的性能问题吗,sql,postgresql,performance,psql,postgresql-9.5,Sql,Postgresql,Performance,Psql,Postgresql 9.5,下面的SQL查询执行大约需要6-7分钟,它将返回~5833135行,有什么可以帮助我解决它的性能问题吗 SQL 使用这样的查询,您无法优化太多内容 按照有效性的顺序: 在机器中放入足够的RAM以缓存整个数据库 为此查询设置尽可能大的work\u mem 如果EXPLAIN输出中存在嵌套循环联接(不太可能),则联接列上的索引可能会有所帮助 您只能从一个表中进行选择,这是左连接系列的第一个表 我想知道这是否符合您的要求: select min(aml.id) as id, aml.n
使用这样的查询,您无法优化太多内容 按照有效性的顺序:
- 在机器中放入足够的RAM以缓存整个数据库
- 为此查询设置尽可能大的
work\u mem
- 如果
输出中存在嵌套循环联接(不太可能),则联接列上的索引可能会有所帮助EXPLAIN
左连接系列的第一个表
我想知道这是否符合您的要求:
select min(aml.id) as id,
aml.name as name,
round(sum(aml.debit), 2) as debit,
round(sum(aml.credit), 2) as credit,
round(sum(aml.balance), 2) as balance,
aml.account_id as account_id,
aml.move_id as move_id,
aml.payment_id as payment_id,
aml.statement_id as statement_id,
aml.journal_id as journal_id,
aml.date as date,
aml.company_id as company_id,
aml.invoice_id as invoice_id,
aml.partner_id as partner_id,
aml.company_currency_id as company_currency_id
from account_move_line aml
group by aml.name, aml.debit, aml.credit, aml.balance,
aml.account_id, aml.move_id, aml.payment_id,
aml.statement_id, aml.journal_id, aml.date,
aml.company_id, aml.invoice_id, aml.partner_id,
aml.company_currency_id;
然后,您将通过如此多的列进行聚合,我想知道是否有必要进行聚合。500万行,需要传输大量数据。冷数据还是热数据?为什么不使用表中的任何内容?删除它们或内部连接
热帐户数据,直到需要7min@Mack . . . 至少您可以尝试优化一个简单得多的查询。
select min(aml.id) as id,
aml.name as name,
round(sum(aml.debit), 2) as debit,
round(sum(aml.credit), 2) as credit,
round(sum(aml.balance), 2) as balance,
aml.account_id as account_id,
aml.move_id as move_id,
aml.payment_id as payment_id,
aml.statement_id as statement_id,
aml.journal_id as journal_id,
aml.date as date,
aml.company_id as company_id,
aml.invoice_id as invoice_id,
aml.partner_id as partner_id,
aml.company_currency_id as company_currency_id
from account_move_line aml
group by aml.name, aml.debit, aml.credit, aml.balance,
aml.account_id, aml.move_id, aml.payment_id,
aml.statement_id, aml.journal_id, aml.date,
aml.company_id, aml.invoice_id, aml.partner_id,
aml.company_currency_id;