1

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?

2

Odp: wykorzystanie indeksu przy podzapytaniu

mam podobny problem

znalazłeś może rozwiązanie lub cokolwiek

3

Odp: wykorzystanie indeksu przy podzapytaniu

A jaki index jest zdefiniowany?  Może pokazałbyś plany zapytań. 'Odświeżyłeś' statystyki?