Witam,
ostatnio miałem okazję przypomnieć sobie coś na temat złożoności obliczeniowej, pamięciowej podstawowych algorytmów..
Zastanawiam się jednak czy takie pojęcie złożoności ('w myśl notacji duzego O') można zastosować do zapytań SQL, a jeśli tak to jak to liczyć..
dla przykładu:
(są tutaj użyte jakieś podzapytania, złączenia, grupowanie, sortowanie... ale jak to przełożyć na "wzór" złożoności obliczeniowej?)
SELECT sub.* FROM
(
SELECT pivot.* FROM
(
SELECT res.id, res.total,
SUM(value*(1-abs(sign(numS-1)))) AS val1,
SUM(value*(1-abs(sign(numS-2)))) AS val2,
SUM(value*(1-abs(sign(numS-3)))) AS val3,
SUM(value*(1-abs(sign(numS-4)))) AS val4,
SUM(value*(1-abs(sign(numS-5)))) AS val5,
SUM(value*(1-abs(sign(numS-6)))) AS val6,
SUM(value*(1-abs(sign(numS-7)))) AS val7,
SUM(value*(1-abs(sign(numS-8)))) AS val8,
SUM(value*(1-abs(sign(numS-9)))) AS val9,
SUM(value*(1-abs(sign(numS-10)))) AS val10
FROM shot
INNER JOIN res
ON res.id = shot.id
GROUP BY id, res.id,
res.p_id, res.total
) pivot
WHERE (SELECT COUNT(1) FROM res AS t2 WHERE t2.p_id = pivot.p_id AND t2.total > pivot.total AND t2.total ) = 0
) sub
INNER JOIN res w
ON w.id = sub.id
ORDER BY w.total DESC, w.number_10 DESC;
podsumowując, kieruje zapytanie : Jak Wy, odpowiedzielibyście na pytanie złożoności takiego zapytania ?