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

ステートメントと比較してpreparedStatementのクエリははるかに遅い

    プリペアドステートメントはfull_addressをキャストします textに (Postgresの組み込みテキストタイプ)、テーブルはcitextで作成されているようですが (大文字と小文字を区別しない)テキストタイプ(または、full_address::textにインデックスがありません )。 full_address::textにインデックスを作成してみてください 準備したステートメントがそれを理解するかどうかを確認します。

    別のオプションは、textを使用することです full_addressのタイプ 列をクリックし、lower(full_address)に機能インデックスを作成します -そのオプションの嗜好性は、要件によって異なります。

    問題の一部は、JDBCがcitextを認識していないことだと思います。 JDBCにアドレスをcitextとしてデータベースに送信させることができない場合は、そう入力してください タイプすると、クエリプランナーによってtextとして解釈されます。 、setString()と同じように メソッドはおそらくそうします。

    興味深いことに、私は最近同様の問題に遭遇しました

    開示:私は EnterpriseDB(EDB) で働いています




    1. postgresql関数を使用して異なるテーブル名からデータをフェッチしたい

    2. SQL-データベースにフォームを挿入します

    3. Npgsqlを使用したEntityFramework6

    4. PostgreSQL/pgAdmin4でシリアルデータ型からIDデータ型に切り替えた後の列の重複