Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah MySQL menghilangkan subekspresi umum antara klausa SELECT dan HAVING/GROUP BY?

Saya pikir ini dapat diuji menggunakan fungsi sleep(),
misalnya lihat demo ini: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;

Waktu eksekusi kedua kueri adalah sekitar 3000 mdtk ( 3 detik ).
Ada 3 record dalam tabel, dan untuk setiap record query hanya tidur selama 1 detik,
jadi ini berarti ekspresi dievaluasi hanya sekali untuk setiap rekaman, bukan dua kali.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cadangkan MySQL Amazon RDS

  2. Adakah yang bisa menjelaskan fitur Pengindeksan Magentos secara detail?

  3. cara menyimpan nilai hash di kolom tabel di Rails

  4. Tidak dapat memuat plugin autentikasi 'caching_sha2_password'

  5. Model database yang tepat untuk sistem umpan balik pengguna (kasus yang menarik)