問題タブ [pg-trgm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
221 参照

ruby-on-rails - Rails での ILIKE クエリのために、GIN と pg_trgm を使用して jsonb 列キーにインデックスを付けます

次の構造のテーブル「リード」があります。

user_details jsonb 列には、データが {name : "John Doe", country : "IN", phone_no : "123456789"}の形式で格納されます。名前キーのILIKEを次のように使用してデータベース列をクエリしたい:

これを実現するために、次のように移行を作成しました。

これにより、必要なインデックスが作成されます。以前の移行で pg_trgm 拡張機能を有効にしました。私のstructure.sqlは次のようになります: ここに画像の説明を入力

また、対応するschema.rbは次の行をリード テーブルに追加します -

ただし、データベースにクエリを実行しようとすると、順次スキャンが実行されます。 ここに画像の説明を入力

一方、user_details 列全体の gin インデックスを作成し、"@> {name: "john"}.to_json"を使用してクエリを実行すると、スキャンにインデックスが使用されます 。ここに画像の説明を入力

Rails のバージョンは5.2.0で、PostgreSQL のバージョンは12.5です。このユースケースでILIKEクエリを使用するにはどうすればよいですか? どこが間違っていますか?必要に応じて詳細をお知らせいたします。