sql >> Database >  >> RDS >> PostgreSQL

Postgresql - Query's worden veel sneller uitgevoerd met enable_nestloop=false. Waarom doet de planner het niet goed?

Als de queryplanner suboptimale queryplannen kiest, is de kans groot dat hij onvolledige of misleidende informatie heeft om mee te werken.

Zie deze PostgreSQL Wiki-pagina op servertuning. Let vooral op de hoofdstukken over random_page_cost en default_statistics_target .
Lees ook de bijbehorende hoofdstukken in de handleiding op Statistieken Gebruikt door de Planner en Plannerkostenconstanten .

Meer specifiek kan het helpen om het statistics target te verhogen voor de volgende kolommen:

ALTER TABLE postgres.products ALTER COLUMN id SET STATISTICS 1000;
ALTER TABLE postgres.sales_orders ALTER COLUMN retailer_id SET STATISTICS 1000;
ALTER TABLE postgres.sales_orders ALTER COLUMN company_id SET STATISTICS 1000;

ALTER TABLE goods_return_notes ALTER COLUMN retailer_id SET STATISTICS 1000;
ALTER TABLE goods_return_notes ALTER COLUMN company_id SET STATISTICS 1000;

ALTER TABLE retailer_category_leaf_nodes ALTER COLUMN tree_left SET STATISTICS 1000;
ALTER TABLE channels ALTER COLUMN principal_id SET STATISTICS 1000;

Deze zijn betrokken bij de filters, wat resulteert in de

Er zijn meer . Controleer elke kolom waar de schaafmachine veel afwijkt van de schatting. De standaardwaarde is slechts 100. Heeft alleen zin voor tabellen met>> 1000 rijen. Experimenteer met de instelling. Voer ANALYZE uit daarna op de tafels om de wijzigingen door te voeren.

Het kan ook helpen om een ​​gedeeltelijke index te maken op postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL (afhankelijk van hoe vaak NULL-waarden zijn).

Een ander ding dat u kan helpen, is om upgraden naar de laatste versie 9.1. Er zijn een aantal substantiële verbeteringen op dit gebied.



  1. Item verwijderen uit ListView en Database met OnItemClickListener

  2. SQL-prestaties zoeken naar lange tekenreeksen

  3. Waarom zijn de prestaties van MySQL-query's zo slecht bij gebruik van een CHAR/VARCHAR-index?

  4. SQL Server-uitvoerclausule in een scalaire variabele