Oto krótki eksperyment, aby zobaczyć, co się stanie.
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
Ponieważ wartości są różne, funkcja jest wywoływana za każdym razem. W pierwszej funkcji zadeklarowałem, że jest deterministyczny, ale nie robiło to różnicy.
Zrobiłem sqlfiddle, abyś mógł go wypróbować z różnymi wersjami mysql.
http://sqlfiddle.com/#!2/a8536/2