索引扫描试图解决这个问题: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我会试试看! –