Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:se utilizzo una funzione nella query SQL più di una volta, verrà ricalcolata ogni volta?

Ecco un breve esperimento per vedere cosa succede.

create function determin_rand (i integer) 
returns float DETERMINISTIC
return rand();

create function not_determin_rand (i integer) 
returns float 
return rand();

select determin_rand(1) as d1 , determin_rand(1) as d2, 
  not_determin_rand(1) as nd1, not_determin_rand(1) as nd2

0.00850549154   0.831901073456  0.133989050984  0.174242004752

Poiché i valori sono diversi, la funzione viene chiamata ogni volta. Nella prima funzione l'ho dichiarato deterministico, ma non faceva differenza.

Ho creato un sqlfiddle per provarlo con diverse versioni di mysql.

http://sqlfiddle.com/#!2/a8536/2