sql >> Database teknologi >  >> RDS >> PostgreSQL

Hold PostgreSQL fra nogle gange at vælge en dårlig forespørgselsplan

Hvis forespørgselsplanlæggeren træffer dårlige beslutninger, er det for det meste en af ​​to ting:

1. statistikken er unøjagtige.

Kører du ANALYZE nok? Også populær i dens kombinerede form VACUUM ANALYZE . Hvis autovakuum er slået til (som er standard i moderne Postgres), ANALYZE køres automatisk. Men overvej:

  • Anbefales regelmæssig VACUUM ANALYZE stadig under 9.1?

Hvis dit bord er stort og datadistribution er irregulær , hæver default_statistics_target kan hjælpe. Eller rettere sagt, sæt bare statistikmålet for relevante kolonner (dem i WHERE eller JOIN klausuler i dine forespørgsler, dybest set):

ALTER TABLE ... ALTER COLUMN ... SET STATISTICS 400;  -- calibrate number

Målet kan indstilles i området 0 til 10000;

Kør ANALYZE igen derefter (på relevante tabeller).

2. omkostningsindstillingerne for planlæggerestimat er slået fra.

Læs kapitlet Planner Cost Constants i manualen.

Se kapitlerne default_statistics_target og random_page_cost på denne generelt nyttige PostgreSQL Wiki-side.

Der er mange andre mulige årsager, men disse er langt de mest almindelige.



  1. Sådan sender du parameter til mssql-forespørgsel i node js

  2. SQL Server 2016:Gendan en database

  3. SQL-forespørgsel:Slet alle poster fra tabellen undtagen seneste N?

  4. Operand bør indeholde 1 kolonne - MySQL NOT IN