Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Wenn ich eine Funktion in einer SQL-Abfrage mehr als einmal verwende, wird sie jedes Mal neu berechnet?

Hier ist ein kurzes Experiment, um zu sehen, was passiert.

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

Da die Werte unterschiedlich sind, wird die Funktion jedes Mal aufgerufen. In der ersten Funktion habe ich es für deterministisch erklärt, aber es hat keinen Unterschied gemacht.

Ich habe ein sqlfiddle für Sie erstellt, damit Sie es mit verschiedenen Versionen von mysql ausprobieren können.

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