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

Czy MySQL eliminuje wspólne podwyrażenia między klauzulą ​​SELECT i HAVING/GROUP BY?

Myślę, że można to przetestować za pomocą funkcji sleep(),
na przykład spójrz na to demo: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;

Czasy wykonania obu zapytań to około 3000 ms ( 3 sekundy ).
W tabeli są 3 rekordy, a dla każdego rekordu zapytanie jest uśpione tylko przez 1 sekundę,
więc oznacza to, że wyrażenie jest oceniane tylko raz dla każdego rekordu, a nie dwa razy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Railsy:wyświetlanie obrazu z pola blob w bazie danych

  2. Hibernacja, C3P0, Mysql — Uszkodzona rura

  3. flaga „aktywna” czy nie?

  4. Jak używać stringów PHP w zapytaniu mySQL LIKE?

  5. Kolejność zagnieżdżenia SQL według?