Topic: Pubblico - Composto da 7 Posts di 3 Utenti.
| 18 Marzo, 2011 14:24 | #1 | ||
|---|---|---|---|
|
in riferimento al Tip: stavo facendo delle prove: 1SELECT 2SYSDATE() AS `data_di_sistema`, 3(SYSDATE() - INTERVAL 1 HOUR) AS `ris.A`, 4(NOW() - INTERVAL 1 HOUR) AS `ris.B`, 5(DATE_SUB(SYSDATE(), INTERVAL 1 HOUR)) AS `ris.C`, 6(DATE_SUB(NOW(), INTERVAL 1 HOUR)) AS `ris.D`; 7 8/* 9+---------------------+---------------------+---------------------+---------------------+---------------------+ 10| data_di_sistema | ris.A | ris.B | ris.C | ris.D | 11+---------------------+---------------------+---------------------+---------------------+---------------------+ 12| 2011-03-18 15:27:00 | 2011-03-18 14:27:00 | 2011-03-18 14:27:00 | 2011-03-18 14:27:00 | 2011-03-18 14:27:00 | 13+---------------------+---------------------+---------------------+---------------------+---------------------+ mi chiedevo quale è la forma / sintassi migliore? Ciao
Ultima modifica 18 Marzo, 2011 14:27 di DebUsr |
|||
| 18 Marzo, 2011 14:48 | #2 | ||
|---|---|---|---|
|
Un'operazione semplice come questa non presenterà differenze di performance minimamente significative qualunque scelta tu faccia. In questo caso, visto che si tratta di un valore scalare, puoi utilizzare la funzione benchmark, eseguire ciascuna sottrazione 1 milione o 10 milioni di volte e vedere i risultati. L'unica cosa davvero interessante è la sottile differenza che esiste tra le funzioni sysdate() e now(). Supponi di avere una stored procedure che esegua inserimenti massivi in una tabella tramite un'unica insert multiriga. Come si dice, un esempio vale più di mille parole: 1mysql> SELECT NOW(), SLEEP(2), NOW(); 2+---------------------+----------+---------------------+ 3| NOW() | SLEEP(2) | NOW() | 4+---------------------+----------+---------------------+ 5| 2011-03-18 15:47:08 | 0 | 2011-03-18 15:47:08 | 6+---------------------+----------+---------------------+ 71 row in set (2.00 sec) 8 9mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE(); 10+---------------------+----------+---------------------+ 11| SYSDATE() | SLEEP(2) | SYSDATE() | 12+---------------------+----------+---------------------+ 13| 2011-03-18 15:47:23 | 0 | 2011-03-18 15:47:25 | 14+---------------------+----------+---------------------+ Ciao.
Ultima modifica 18 Marzo, 2011 15:21 di john_revelator No PVT tecnici. Non rispondo nemmeno. Usate il forum. |
|||
| 18 Marzo, 2011 15:00 | #3 | ||
|---|---|---|---|
|
Interessante :) Salvatore DC La mente è come un paracadute: funziona solo se si apre. A.Einstein. |
|||
| 18 Marzo, 2011 15:07 | #4 | ||
|---|---|---|---|
|
Eh sì, a uno sguardo superficiale le due funzioni sembrano identiche e non se ne capisce l'utilità. Ciao collega :) No PVT tecnici. Non rispondo nemmeno. Usate il forum. |
|||
| 18 Marzo, 2011 15:19 | #5 | ||
|---|---|---|---|
|
Questa del sysdate e now è stata una cosa che mi ha sempre incuriosito ma non ho mai pensato di chiedere o documentarmi in giro :) Ho fatto un benchmark e sembra che il (DATE_SUB(NOW(), INTERVAL 1 HOUR)) sia leggermente più veloce rispetto al (NOW() - INTERVAL 1 HOUR), immagino che la 'sottrazione' implicita richieda a MySQL un passaggio in più rispetto a quella esplicita. In ogni caso, sempre in benckmark, il NOW() sembra molto più veloce del SYSDATE() e vista la differenza dei due comandi si capisce anche perchè :) Grande revelator :D Salvatore DC La mente è come un paracadute: funziona solo se si apre. A.Einstein. |
|||
| 18 Marzo, 2011 15:24 | #6 | ||
|---|---|---|---|
|
Ah, davvero. ? No PVT tecnici. Non rispondo nemmeno. Usate il forum. |
|||
| 18 Marzo, 2011 16:45 | #7 | ||
|---|---|---|---|
|
grazie a tutti per l'approfondimento :) |
|||
Condividi su:
Loggati o Registrati per replicare