Zapytanie do bazy - jedno duże czy kilka mniejszych

0

Witam, czy lepiej jest 'złożyć' jedno spore zapytanie do bazy, czy lepiej rozbić je na kilka mniejszych ?
np.

SELECT 
  SUM(waga) AS WAGANBRUTTO, 
  SUM(waga_zanieczyszczenia) AS ZAN, 
  rodzajodpadow.nazwa AS ODPAD, 
  kth.nazwa_firmy AS KTH, 
  kth_obslugujacy.nazwa AS OBSNAZWA 
FROM 
  pz,
  pz_pozycje,
  kth, 
  rodzajodpadow, 
  kth_obslugujacy 
WHERE 
   pz.idkth = kth.idkth AND 
   pz_pozycje.idpz = pz.idpz AND 
   rodzajodpadow.idrodzaj = pz_pozycje.idrodzajodpadu AND 
   kth_obslugujacy.id_obslugujacy = pz.idobs AND 
   pz.idpz IN (
          SELECT
             zestawienia_pz.idpz 
          FROM 
             zestawienia, 
             zestawienia_pz 
          WHERE 
             zestawienia.idzestawienia = 4
    ) AND
   kth.idkth IN (
         SELECT 
             zestawienia_kth.idkth
         FROM 
             zestawienia, 
             zestawienia_kth
         WHERE 
             zestawienia.idzestawienia =4
    )GROUP BY idrodzajodpadu, nazwa_firmy

czy pobrać najpierw listę kontrahentów (kth) i listę PZ'tów i wtedy N razy powtórzyć kwerendę sumującą ?

0

w większości kilka mniejszych zapytań zrobi większy ruch niż jedno większe. Inna sprawa czy to jest optymalne czy nie ale do tego służy plan zapytania i jego interpretacja

0

Dzięki za odpowiedź. Właśnie mam problem z optymalizacją :) Stąd pytanie czy lepiej rozbić to na kilka mniejszych zapytań, chociaż jedno zapytanie które zwraca potrzebne mi dane rozwiązuje jeszcze kilka innych problemów i skraca mój kod :)

0

Nie ma jednoznacznej odpowiedzi na to pytanie. Wszystko zalezy od struktury Twojej bazy, jakie masz indeksy, po jakich polach szuksz, łączysz itd.
Czasem opłaca sie zrobic jedno zapytanie, czasem zrobienie dwoch lub trzech mniejszych potrafi przyspieszyc caly proces o kilkaset procent. Jedyny sposob to analiza jak dane zapytania sa interpretowane na Twojej konkretnej bazie prze Twoj konkretny silnik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0