sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Om jag använder en funktion i SQL-frågan mer än en gång kommer den att beräknas om varje gång?

Här är ett kort experiment för att se vad som händer.

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

Eftersom värdena är olika anropas funktionen varje gång. I den första funktionen förklarade jag det deterministiskt, men det gjorde ingen skillnad.

Jag gjorde en sqlfiddle så att du kan prova den med olika versioner av mysql.

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



  1. Infoga data i tabellen med resultat från en annan urvalsfråga

  2. Ansluter fjärrserver mysql-databas till localhost

  3. Hur EXP() fungerar i MariaDB

  4. Metadata om PL/SQL-posttyper på paketnivå