sql >> データベース >  >> RDS >> PostgreSQL

Postgresql 9.x: `xpath_exists`(XMLEXISTS)クエリを最適化するためのインデックス

    プランナーのコストパラメータ

    これは、あなたのrandom_page_cost およびseq_page_cost おそらく間違っています。データベースの大部分がRAMにキャッシュされているか、SSD、キャッシュ付きSAN、またはランダムI / Oが本質的に高速なその他のストレージを使用しているため、高速ランダムI/Oを備えたストレージを使用している可能性があります。

    >

    試してみてください:

    SET random_page_cost = 1;
    SET seq_page_cost = 1.1;
    

    コストパラメータの違いを大幅に減らしてから再実行します。その場合、ジョブはpostgresql.conf.でこれらのパラメータを変更することを検討します。 。

    行数の見積もりは妥当であるため、プランナーの見積もりの​​誤りやテーブル統計の不良の問題のようには見えません。

    不正なクエリ

    クエリも正しくありません。 OFFSET 0 LIMIT 1 ORDER BYなし 一致するものが1つだけであることが保証されていない限り、予測できない結果が生成されます。一致する場合は、OFFSET ... LIMIT ... 句は不要であり、完全に削除できます。

    通常は、SELECT max(...)などのクエリを表現する方がはるかに優れています。 またはSELECT min(...) 可能であれば; PostgreSQLは、高価なテーブルスキャンやインデックススキャンと並べ替えを行うことなく、インデックスを使用して目的の値を取得できる傾向があります。

    ヒント

    ところで、将来の質問のために、PostgreSQLwikiにはパフォーマンスカテゴリ にいくつかの良い情報があります。 遅いクエリの質問 を尋ねるガイド 。




    1. SQLServerプロファイラーでSQLServerクエリのパラメーター値を取得するにはどうすればよいですか

    2. PHP mySQL-データベースから切断するのに最適な時期はいつですか?

    3. エラー「ORA-01789:クエリブロックの結果列の数が正しくありません」を修正しました

    4. PostgreSQLはテキストに部分文字列が出現する回数をカウントします