sql >> Database >  >> RDS >> Mysql

MySQL:als ik een functie in SQL-query meer dan één keer gebruik, wordt deze dan elke keer opnieuw berekend?

Hier is een kort experiment om te zien wat er gebeurt.

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

Omdat de waarden verschillend zijn, wordt de functie elke keer aangeroepen. In de eerste functie verklaarde ik het deterministisch, maar het maakte geen verschil.

Ik heb een sqlfiddle voor je gemaakt om het uit te proberen met verschillende versies van mysql.

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



  1. Toegang tot mysql externe database vanaf de opdrachtregel

  2. Converteer een mySQL-datum naar Javascript-datum

  3. Hoe maak ik een stap in mijn SQL Server Agent Job die mijn SSIS-pakket zal uitvoeren?

  4. Django/MySQL-site instellen om UTF-8 te gebruiken