この問題を解決しようとしています: Sql: 特定のアイテムのセットを含むすべてのバスケットを選択します
言い換えれば、テーブルがあります:
tbl_basket_item
--
basketId itemId
1 2
1 3
1 4
2 3
2 4
3 2
3 4
itemIdはインデックス化されています。
itemId=2でスキャンを実行すると、次のようになります。
SELECT basketId FROM tbl_basket_item WHERE itemId = 2
1
3
itemId=4でスキャンを実行すると、次のようになります。
SELECT basketId FROM tbl_basket_item WHERE itemId = 4
1
2
3
これらの 2 つのスキャンを交差させて取得できますか?
SELECT basketId FROM tbl_basket WHERE
basketId IN (SELECT basketId FROM tbl_basket_item WHERE itemId = 2) AND
basketId IN (SELECT basketId FROM tbl_basket_item WHERE itemId = 4)
1
3
ビットマップ インデックスなど、いくつかの PostgeSQL 高度なインデックス作成技術を使用していますか?