Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:Se eu usar uma função na consulta SQL mais de uma vez, ela será recalculada todas as vezes?


Aqui está um pequeno experimento para ver o que acontece.
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

Como os valores são diferentes, a função é chamada a cada vez. Na primeira função declarei determinístico, mas não fez diferença.

Eu fiz um sqlfiddle para você experimentar com diferentes versões do mysql.

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