sql >> Databáze >  >> RDS >> Mysql

Odstraňuje MySQL běžné podvýrazy mezi klauzulemi SELECT a HAVING/GROUP BY

Myslím, že to lze otestovat pomocí funkce sleep(),
například se podívejte na toto 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;

Časy provedení obou dotazů jsou asi 3000 ms ( 3 sekundy ).
V tabulce jsou 3 záznamy a pro každý záznam se dotaz uspí pouze na 1 sekundu,
to znamená, že je výraz vyhodnocen pouze jednou pro každý záznam, nikoli dvakrát.



  1. Existují nějaké bezplatné nástroje pro generování skriptů 'INSERT INTO' v MS SQL Server?

  2. Vygenerujte SQL pro aktualizaci primárního klíče

  3. Dotaz k nalezení tabulek upravených za poslední hodinu

  4. Jak porovnat dva databázové objekty v Oracle?