[英]Postgres Query taking long time
我有這個 SQL 查詢需要很長時間(~12s)才能執行:
select nextval('rec_id_seq_af') as rec_id,ds_id,ds_dt_id,
inv_vcf_id,inv_sample_id,inv_variant_id,ds_dt_line_seq from rs_data_1_af
group by ds_id,ds_dt_id,inv_vcf_id,inv_sample_id,inv_variant_id,ds_dt_line_seq
order by ds_id,ds_dt_id,inv_vcf_id,inv_sample_id,inv_variant_id,ds_dt_line_seq;
當我運行時:
EXPLAIN (ANALYZE, BUFFERS)
select nextval('rec_id_seq_af') as rec_id,ds_id,ds_dt_id,
inv_vcf_id,inv_sample_id,inv_variant_id,ds_dt_line_seq from rs_data_1_af
group by ds_id,ds_dt_id,inv_vcf_id,inv_sample_id,inv_variant_id,ds_dt_line_seq
order by ds_id,ds_dt_id,inv_vcf_id,inv_sample_id,inv_variant_id,ds_dt_line_seq;
這是 output:
Group (cost=724728.48..780477.07 rows=314077 width=88) (actual time=10395.641..12546.322 rows=5703 loops=1)
Group Key: ds_id, ds_dt_id, inv_vcf_id, inv_sample_id, inv_variant_id, ds_dt_line_seq
Buffers: shared hit=80975, temp read=91041 written=91171
-> Sort (cost=724728.48..732580.39 rows=3140766 width=80) (actual time=10395.619..12019.351 rows=3140766 loops=1)
Sort Key: ds_id, ds_dt_id, inv_vcf_id, inv_sample_id, inv_variant_id, ds_dt_line_seq
Sort Method: external merge Disk: 286312kB
Buffers: shared hit=75272, temp read=91041 written=91171
-> Seq Scan on rs_data_1_af (cost=0.00..106679.66 rows=3140766 width=80) (actual time=0.009..575.729 rows=3140766 loops=1)
Buffers: shared hit=75272
Planning Time: 0.478 ms
Execution Time: 12581.964 ms
當 rs_data_1_af 表中的記錄增加時,我會有數百萬行,這個查詢需要幾個小時才能執行。
我該如何優化?
你為什么要運行nextval('rec_id_seq_af')
?
nextval()
推進索引並返回下一個值。 對於每一行,它必須這樣做,獨立地讀/寫,難怪它很慢。
那里的目的是什么,也許您可以使用generate_series()
或其他東西?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.