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

MySQLはSELECT句とHAVING/GROUPBY句の間の一般的な部分式を削除しますか

    これはsleep()関数を使用してテストできると思います。
    たとえば、次のデモを見てください。 http://sqlfiddle.com/#!2/0bc1b/1

    Select * FROM t;
    
    | X |
    |---|
    | 1 |
    | 2 |
    | 2 |
    
    SELECT x+sleep(1)
    FROM t
    GROUP BY x+sleep(1);
    
    SELECT x+sleep(1) As name
    FROM t
    GROUP BY name;
    

    両方のクエリの実行時間は約3000ミリ秒(3秒)です。
    テーブルには3つのレコードがあり、各レコードに対してクエリは1秒間だけスリープします。
    つまり、式が評価されることを意味します。レコードごとに1回だけで、2回ではありません。



    1. pg-v0.17.1のインストール

    2. パスワードなしでpsqlコマンドを使用してバッチファイルを実行する

    3. データベースが呼び出されたときにアプリケーションがフリーズしています

    4. JDBC:MySQLへの日付値の挿入