[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: SQL: incrementare valore



Il motore del database e in grado di capire quando una subquery non dipende dalla riga dell'update ed eseguirla una volta sola anche in casi molto ma molto più complessi di questo.

Ovviamente puoi cercare di sostituirti all'ottimizzatore scrivendo delle stored procedure ogni volta che la query si complica ma raramente è una buona idea. Nel 99% dei casi l'ottimizzatore produce i risultati più velocemente. (Sempre che il database sotto non sia una caccola tipo MySQL.)

federico


Il 29 aprile 2017 15:02:14 CEST, Giuliano Curti <giulianc51@gmail.com> ha scritto:
On 4/29/17, Federico Di Gregorio <fog@dndg.it> wrote:
Puoi fare:

UPDATE mee SET r_co = (SELECT max(r_co) FROM mee) + r_to - r_fr WHERE r_id =
...

domanda x capire, non per obiettare :-)
la funzione UPDATE itera su tutti i record, la funzione SELECT
nidificata, che anch'essa itera su tutti i record, non risulta
penalizzante? si avrebbe un algoritmo di complessità N**2;

non è possibile memorizzare MAX(r_co) in una variabile temporanea e
poi usarla nel ciclo UPDATE in modo da avere un algoritmo di
complessita N? la domanda deriva dal fatto che non conosco se in SQL è
possibile farlo (in uno script python non avrei dubbi);


Ciao,
Federico

grazie, ciao,
giuliano


--
Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità.
Reply to: