Il grosso problema qui è che il fattore più importante (di gran lunga) nel determinare quanto tempo richiederà una query è il che non fa nulla con la query stessa. Piuttosto, il più grande fattore nel determinare la risposta è il carico collocato sul database mentre la query è in esecuzione, specialmente includendo il carico da altre query. Per query complesse su sistemi attivi, questo carico può anche cambiare significativamente nel corso della query.
Quello che puoi fare è ottenere un piano di esecuzione per la tua query, usando la parola chiave EXPLAIN
. È possibile utilizzare questo per ottenere un'idea relativa, a parità di tutti gli altri, per quanto potrebbe costare una determinata query. Anche qui, però, MySql non lo rende facile, in quanto non ti darà solo un buon costo del piano o numeri di tempi di esecuzione che puoi utilizzare, come fa SQL Server. È necessario dedurre quei numeri in base alle righe e alle letture del disco.
Anche in questo caso, anche se si genera un costo stimato e quindi si esegue la query, è possibile ottenere risultati in un tempo notevolmente più lungo o più breve del previsto poiché il carico cambia sul server dopo la creazione del preventivo e l'esecuzione della query .
In questo caso, dopo 10 ore, suona come si potrebbe avere un/problema di blocco di blocco. Se hai un'altra query attiva (probabilmente di lunga durata o ricorrente) che utilizza questa tabella, prova a eliminarla e ci sono buone probabilità che la tua query termini naturalmente pochi minuti dopo.
fonte
2014-12-27 20:17:40
http://dev.mysql.com/doc/refman/5.6/en/show-processlist.html –
@ ÁlvaroG.Vicario Mi mostra la durata dall'avvio della query. La mia domanda è completamente diversa. Non capisco perché lo menzioni? – mmswe
No.Non c'è modo di vederlo, perché il tempo di esecuzione della query dipende da molti altri fattori oltre a mysql stesso (come risorse della CPU gratuite, RAM gratuita, ecc.). – bksi