問題タブ [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.
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クエリを使用するにはどうすればよいですか? どこが間違っていますか?必要に応じて詳細をお知らせいたします。