PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Niezwykle wolne zapytanie PostgreSQL z klauzulami ORDER i LIMIT

Kiedy masz zarówno LIMIT, jak i ORDER BY, optymalizator zdecydował, że szybciej limpować przez niefiltrowane rekordy na foo, malejąco według klawisza, aż uzyska pięć dopasowań dla pozostałych kryteriów. W innych przypadkach po prostu uruchamia zapytanie jako zagnieżdżoną pętlę i zwraca wszystkie rekordy.

Powiedziałbym, że problem polega na tym, że PG nie nabija stawu dystrybucja różnych identyfikatorów i dlatego plan jest tak nieoptymalny.

Możliwe rozwiązania:Zakładam, że ostatnio uruchomiłeś ANALIZA. Jeśli nie, zrób to. To może wyjaśniać, dlaczego szacowane czasy są wysokie, nawet w wersji, która szybko powraca. Jeśli problem będzie się powtarzał, być może uruchom ORDER BY jako podselekcję i włącz LIMIT w zewnętrznym zapytaniu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z buforowania pg_prewarm i pg_hibernator contrib w PostgreSQL 9.4.

  2. BŁĄD:podzapytanie w FROM nie może odnosić się do innych relacji tego samego poziomu zapytania

  3. Klucz podstawowy z porządkowaniem ASC lub DESC?

  4. Tabela sortująca SQL oparta na dwóch wymiennych polach

  5. Instrukcja SQL, aby usunąć tylko jeden wiersz z duplikatów