sql >> データベース >  >> RDS >> Mysql

MySQL:SQLクエリで関数を複数回使用すると、毎回再計算されますか?

    これが何が起こるかを確認するための簡単な実験です。

    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
    

    値が異なるため、関数は毎回呼び出されます。最初の関数で決定論的であると宣言しましたが、違いはありませんでした。

    さまざまなバージョンのmysqlで試してみるためにsqlfiddleを作成しました。

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



    1. Postgresql列挙型の長所と短所は何ですか?

    2. 複数列の外部キー:すべてではなく、削除時に単一の列をNullに設定します

    3. postgresで重複する配列値を排除する

    4. PostgreSQL-制約を無効にする