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

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

    多くのデータベースに見られる一般的な「インデックスヒント」機能について質問していると仮定すると、PostgreSQLはそのような機能を提供しません。これは、PostgreSQLチームによって行われた意識的な決定でした。代わりに何ができるのか、そして何ができるのかについての概要は、ここにあります。その理由は基本的に、データが変更されると後でさらに問題を引き起こす傾向があるパフォーマンスハックであるのに対し、PostgreSQLのオプティマイザは統計に基づいて計画を再評価できるためです。言い換えると、今日の優れたクエリプランは、常に優れたクエリプランではない可能性があり、インデックスヒントは、特定のクエリプランを常に強制します。

    テストに役立つ非常に鈍いハンマーとして、enable_seqscanを使用できます。 およびenable_indexscan パラメーター。参照:

    • インデックスの使用状況を調べる
    • enable_ パラメータ

    これらは継続的な本番環境での使用には適していません 。クエリプランの選択に問題がある場合は、クエリパフォーマンスの問題を追跡するためのドキュメントを参照してください。 enable_を設定するだけではいけません paramsと離れて歩きます。

    インデックスを使用する非常に正当な理由がない限り、Postgresが正しい選択をしている可能性があります。なぜですか?

    • 小さなテーブルの場合、順次スキャンを実行する方が高速です。
    • データ型が適切に一致しない場合、Postgresはインデックスを使用しません。適切なキャストを含める必要がある場合があります。
    • プランナーの設定が問題を引き起こしている可能性があります。

    この古いニュースグループの投稿も参照してください。



    1. Android SQLite Journalの動作が変更されましたか?

    2. ユーザー定義のレコード・データ型を持つPL/SQLの強力な参照カーソル

    3. MySQLレプリケーションのベストプラクティス

    4. パラメータとしてのPostgres整数配列?