sql >> Databáze >  >> RDS >> Mysql

MySQL:Pokud funkci v dotazu SQL použiji více než jednou, přepočítá se pokaždé?

Zde je krátký experiment, abyste viděli, co se stane.

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

Protože se hodnoty liší, funkce se volá pokaždé. V první funkci jsem ji prohlásil za deterministickou, ale nedělalo to žádný rozdíl.

Vytvořil jsem pro vás sqlfiddle, abyste si to vyzkoušeli s různými verzemi mysql.

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



  1. 5 tipů, jak udržet databázi v bezpečí

  2. Výjimka JPA Hibernate Persistence [PersistenceUnit:výchozí] Nelze sestavit Hibernate SessionFactory

  3. Jak klastrovat vaše nástroje pro vyrovnávání zatížení ProxySQL

  4. Jak mohu namapovat datum Java na DATETIME v mysql (ve výchozím nastavení je to TIMESTAMP) s poznámkami Hibernate