あなたは必要以上にもう1つの角を考えています。より簡単にすることができます:
SELECT s.store_names, l.location
FROM stores s
JOIN (
SELECT location
FROM locations
WHERE stateid = 1
) l ON s.states ILIKE l.location
パフォーマンスを向上させるためにサブセレクトのみを使用します。クエリプランナーがこの単純なクエリ(およびPostgresのバージョン)で同じプランを使用するのに十分賢いかどうかはわかりません。
SELECT s.store_names, l.location
FROM stores s
JOIN locations l ON s.states ILIKE l.location
WHERE l.stateid = 1
たぶん、あなたは(で)試しEXPLAIN ANALYZE
て、彼らが同じ計画を使用しているかどうか(そして同じことを実行しているかどうか)を報告することができますか?
そして、私はあなたが実際に%
あなたの目的のために追加する必要があると思います:
... ON s.states ILIKE ('%' || l.location || '%')