sql >> Databáze >  >> RDS >> PostgreSQL

Jaké jsou výhody a nevýhody provádění výpočtů v SQL vs. ve vaší aplikaci

Záleží na spoustě faktorů – ale nejdůležitější je:

  • složitost výpočtů (upřednostňujte komplexní křupání na aplikačním serveru, protože to se zmenšuje; spíše než db server, který se navyšuje )
  • objem dat (pokud potřebujete přistupovat k velkému množství dat nebo je agregovat, ušetříte tím šířku pásma a disk io, pokud lze agregace provádět uvnitř indexů)
  • pohodlí (sql není nejlepší jazyk pro složitou práci – zvláště není skvělý pro procedurální práci, ale velmi dobrý pro práci založenou na množinách; mizerné řešení chyb)

Jako vždy, pokud uděláte přeneste data zpět na aplikační server, minimalizace sloupců a řádků bude vaší výhodou. Ujištění se, že je dotaz vyladěn a vhodně indexován, pomůže oběma scénářům.

K vaší poznámce:

a poté procházet záznamy

Opakování přes záznamy je téměř vždy špatná věc v sql - dává se přednost psaní operace založené na množinách.

Obecně , preferuji omezit práci databáze na minimum "uložte tato data, načtěte tato data" - vždy však existují příklady scénářů, kdy elegantní dotaz na serveru může ušetřit spoustu šířky pásma.

Zvažte také:pokud je to výpočetně drahé, lze to někde uložit do mezipaměti?

Pokud chcete přesné "který je lepší"; nakódujte jej oběma způsoby a porovnejte (všimněte si, že první návrh ani jednoho z nich pravděpodobně není 100% vyladěn). Ale zohledněte k tomu typické použití:pokud je ve skutečnosti voláno 5krát (odděleně) najednou, pak to simulujte:neporovnávejte pouze jeden „1 z těchto vs 1 z těchto“.



  1. Jak ověřit zálohy MySQL pomocí ClusterControl

  2. Mám specifikovat INDEX i UNIQUE INDEX?

  3. Jak vybrat prvních N řádků na skupinu v MySQL

  4. Filtr měsíce a roku CriteriaQuery