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

MySQL:Hvis jeg bruger en funktion i SQL-forespørgsel mere end én gang, bliver den genberegnet hver gang?

Her er et kort eksperiment for at se, hvad der sker.

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 værdierne er forskellige, bliver funktionen kaldt hver gang. I den første funktion erklærede jeg det deterministisk, men det gjorde ikke en forskel.

Jeg har lavet en sqlfiddle, så du kan prøve den med forskellige versioner af mysql.

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



  1. Omgå JOIN-grænsen på 61 tabeller i MySQL ved at indlejre underforespørgsler i hinanden

  2. Vælg et indlæg, der ikke har et bestemt tag

  3. Kryptering af adgangskode i Java eller MySQL?

  4. Kopier rækker fra en tabel til en anden ved hjælp af INSERT-forespørgsel