Version 3 (modified by JP, 7 years ago) |
---|
Optymalizacja zapytań PostgreSQL
Zasady:
- Unikaj podzapytań. Zamiast tego wybieraj dane za pomocą JOIN-ów
- Najmniejsza tabela pierwsza (lub taka na której warunek jest najbardziej efektywny)
Testowanie zapytań
Dla 20 jednoczesnych klientów, używając 4 wątków, przez maksymalnie 300 sec wykonuj zapytanie zawarte w pliku:
edokumenty$ pgbench -c20 -T300 -j4 -f tests/query.sql edokumenty -p5432
Przykłady
Przykład nr 1
-- Przed SELECT t1.id, a, b, c, (SELECT d FROM table2 t2 WHERE t2.id = t1.id) AS d FROM table t1; -- Po SELECT t1.id, a, b, c, t2.d FROM table t1 INNER JOIN t2 ON t1.id = t2.id
Instrukcje dla optymalizatora
Instrukcja dla optymalizatora za pomocą GUC (Grand Unified Configuration), które może zadeklarować np. przed wykonaniem zapytania.
-- Zwiększ zasoby procesora dla zapytania SET cpu_table_cost = 0.15; -- Nie przestawiaj ani nie sprawdzaj kolejności tabel: SET join_collapse_limit = 1; -- SET enable_nestloop = FALSE; -- SET enable mergejoin = FALSE;