索引掃描試圖解決這個問題:Sql: choose all baskets containing a set of particular items的PostgreSQL:交叉在相同的索引
換句話說有一個表:
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
我現在可以相交的兩次掃描來獲得:
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高級索引技術,如位圖索引?
究竟什麼是你的問題?你在找「interesct」操作符嗎?我也看不出具體的索引_type_與您的問題有什麼關係。這個陳述有沒有性能問題?如果是,那麼請閱讀:https://wiki.postgresql.org/wiki/Slow_Query_Questions –
double NOT EXISTS()查詢生成結點表上內部查詢的索引掃描(即使對於這個非常小的rowcount = 7) – joop
@joop我會試試看! –