Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:Jeśli użyję funkcji w zapytaniu SQL więcej niż jeden raz, czy za każdym razem zostanie ona ponownie obliczona?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL GROUP BY:interwały w ciągłości?

  2. MySQL - WYBIERZ tylko 2 wiersze z każdej „grupy”

  3. Błąd połączenia php MySql

  4. Załaduj dane z CSV wewnątrz pola bitowego w mysql

  5. Kopia zapasowa bazy danych SQL Query