Zakładając, że pytasz o powszechną funkcję „podpowiedzi do indeksu”, którą można znaleźć w wielu bazach danych, PostgreSQL nie zapewnia takiej funkcji. To była świadoma decyzja zespołu PostgreSQL. Dobry przegląd tego, dlaczego i co możesz zrobić, znajdziesz tutaj. Powodem jest w zasadzie to, że jest to włamanie do wydajności, które później powoduje więcej problemów, gdy zmieniają się dane, podczas gdy optymalizator PostgreSQL może ponownie ocenić plan na podstawie statystyk. Innymi słowy, to, co dzisiaj może być dobrym planem zapytań, prawdopodobnie nie będzie dobrym planem zapytań na zawsze, a wskazówki dotyczące indeksu wymuszają określony plan zapytań na zawsze.
Jako bardzo tępy młotek, przydatny do testowania, możesz użyć enable_seqscan
i enable_indexscan
parametry. Zobacz:
- Badanie wykorzystania indeksu
enable_
parametry
Te nie nadają się do ciągłego użytku produkcyjnego . Jeśli masz problemy z wyborem planu zapytań, zapoznaj się z dokumentacją dotyczącą śledzenia problemów z wydajnością zapytań. Nie ustawiaj tylko enable_
parametry i odejdź.
O ile nie masz bardzo dobrego powodu do korzystania z indeksu, Postgres może dokonać właściwego wyboru. Dlaczego?
- W przypadku małych tabel szybsze jest wykonywanie skanów sekwencyjnych.
- Postgres nie używa indeksów, gdy typy danych nie pasują do siebie prawidłowo, może być konieczne uwzględnienie odpowiednich rzutowań.
- Ustawienia terminarza mogą powodować problemy.
Zobacz także ten stary post na grupie dyskusyjnej.