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

Jak wyłączyć wszystkie optymalizacje PostgreSQL

Nie możesz.

Planer zapytań PostgreSQL nie ma flagi „wyłącz optymalizację”.

Byłoby ciekawie dodać, ale spowodowałoby to, że testy regresji byłyby znacznie bardziej złożone i miałyby bardzo ograniczoną użyteczność.

Aby robić to, co chcesz, myślę, że chciałbyś zmodyfikować kod planowania zapytań, przekompilować i ponownie zainstalować PostgreSQL dla każdego testu. Lub zhakuj go, aby dodać kilka niestandardowych GUC (zmienne systemowe, takie jak enable_seqscan ), aby umożliwić włączanie i wyłączanie poszczególnych optymalizacji.

Wątpię, aby jakakolwiek taka łatka została zaakceptowana w PostgreSQL, ale warto byłoby to zrobić jako odrzut.

Jedynym wyzwaniem jest to, że PostgreSQL nie rozróżnia wyraźnie między „optymalizacją” a „rzeczą, którą robimy, aby wykonać zapytanie”. Czasami części kodu planera oczekiwane i wymagaj że zastosowano określoną optymalizację, aby działała poprawnie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz indeks wielokolumnowy, aby wymusić unikalność

  2. Hibernacja:Utwórz indeks

  3. co oznacza ten błąd postgres:ROWS nie ma zastosowania, gdy funkcja nie zwraca zestawu?

  4. Tabela zapytań z array_agg/median WSZYSTKICH poprzednich pozycji, LAST_10, LAST_50, z wyłączeniem bieżącej pozycji

  5. PostgreSQL przekazuje dane z rekurencyjnego CTE do funkcji