0
我試圖優化這個查詢:的Postgres選擇一個aweful查詢計劃,那怎麼可以固定
EXPLAIN ANALYZE
select
dtt.matching_protein_seq_ids
from detected_transcript_translation dtt
join peptide_spectrum_match psm
on psm.detected_transcript_translation_id =
dtt.detected_transcript_translation_id
join peptide_spectrum_match_sequence psms
on psm.peptide_spectrum_match_sequence_id =
psms.peptide_spectrum_match_sequence_id
WHERE
dtt.matching_protein_seq_ids && ARRAY[654819, 294711]
;
當seq_scan被允許(設置ENABLE_SEQSCAN = ON),優化器選擇一個很可怕的計劃,在49.85秒運行:
https://explain.depesz.com/s/WKbew
隨着集ENABLE_SEQSCAN =關,所選擇的計劃使用正確的索引和查詢instantely運行。
https://explain.depesz.com/s/ISHV
注意,我並運行分析有關的所有三個表...