検索

ホームページ  >  に質問  >  本文

Postgres に指定されたインデックスの使用を強制するにはどうすればよいですか?

<p>Postgres がシーケンシャル スキャンの実行を要求する場合、強制的にインデックスを使用するにはどうすればよいですか? </p>
P粉785905797P粉785905797465日前665

全員に返信(1)返信します

  • P粉281089485

    P粉2810894852023-08-21 18:52:40

    多くのデータベースで一般的な「インデックス ヒント」機能について質問していると仮定しますが、PostgreSQL にはそのような機能はありません。これは PostgreSQL チームによる意図的な決定です。その理由と何ができるかの概要については、ここをご覧ください。基本的な理由は、これはデータが変更されるとより多くの問題を引き起こす傾向にあるパフォーマンス最適化方法であり、PostgreSQL のオプティマイザーは統計に基づいて計画を再評価できるためです。言い換えれば、現在は優れたクエリ プランであっても、常に優れたクエリ プランであるとは限らず、インデックス ヒントにより特定のクエリ プランが強制されます。

    非常に粗雑なツールですが、テスト目的で、enable_seqscan および enable_indexscan パラメータを使用できます。見る: ###

    これらの

    は、継続的な運用での使用を目的としたものではありません。クエリ プランの選択で問題が発生した場合は、クエリ パフォーマンスの問題の追跡に関するドキュメントを参照してください。 enable_ パラメータを設定してそのまま放置しないでください。 インデックスを使用する特別な理由がない限り、Postgres はおそらく正しい選択をするでしょう。なぜ?

    小さなテーブルの場合は、順次スキャンの方が高速です。

      データ型が一致しない場合、Postgres はインデックスを使用しません。場合によっては、適切な変換を含める必要があります。
    • プラン設定が問題を引き起こしている可能性があります。
    • この古いニュースグループの投稿
    も参照してください。

    返事
    0
  • キャンセル返事