我有三张桌子:
FILM(ID,TITLE)
ACTOR(ID,NAME,GENDER)
CAST(ACTOR_ID,FILM_ID,ROLE)外键: ACTOR_ID,FILM_ID
我在CAST表的列(ACTOR_ID,FILM_ID)上创建了一个btree。
我是否可以使用INLJ (索引嵌套循环连接)算法进行以下连接?
...
FROM FILM,CAST
WHERE FILM.ID = CAST.FILM_ID ;发布于 2017-01-30 15:56:11
我非常怀疑它是否会这样做。PostgreSQL还没有实现索引跳过扫描,如果实现了,它们只有在只有少数几个不同的参与者时才会有效。
可以(但不太可能)将索引用于INLJ以外的其他内容。如果role字段非常宽(导致cast表比其上的索引大得多),并且role不在选择列表中,而且该表处于真空状态,那么它可能决定只索引扫描索引,而不是seq扫描cast表,作为合并联接或散列连接的一部分。
(顺便说一下,cast不是一个有效的表名,因为它是一个保留字)
https://dba.stackexchange.com/questions/162592
复制相似问题