Temat: wykorzystanie indeksu przy podzapytaniu
Witam
Mam dwie tabele, które mają zdefiniowane indeksy.
tabela1 (
id serial,
pole1 varchar(10),
....
)
indeks na id.
oraz
tabela2 (
indeksowane_pole varchar(10),
opis varchar(50)
)
indeks na indeksowane_pole
Przy tworzeniu zapytania z join po indeksowanej kolumnie np.:
select tabela1.id, tabela1.pole1, tabela2.opis from tabela1 left join tabela2 on (tabela1.pole1 = tabela2.indeksowane_pole);
Komenda EXPLAIN ANALYZE wskazuje, że indeks jest wykorzystywany, czyli wszystko ok.
Problem pojawia sie w podzapytaniu np. takim:
select tabela1.id, tabela1.pole23, (select tabela2.opis from tabela2 where tabela2.indeksowane_pole = tabela1.pole1) as 'COS'
from tabela1;
W takim przypadku EXPLAIN ANALYZE wskazuje ze select z tabeli2 nie wykorzystuje indeksu tylko sprawdza tabelę sekwencyjnie. Niestety nie mogę użyć joina. Czy ktoś może mi poradzić jaki indeks powinien być zdefiniowany na tabeli2?