Provare a suddividere la query di selezione per molte parti, ad esempio, la prima query di selezione deve essere limitata a 50000 e quindi la seconda query di selezione deve essere avviata da 50000 e limitata a 50000 e così via.
Potete farlo da questo scenario:
1- Ricevi contano record.
2- Creare un ciclo e terminarlo con il numero di record.
3- Per ogni ciclo, rendono la query di selezione selezionare 50000 record e aggiungere i risultati di un DataTable (dipende da ciò che è il tuo linguaggio di programmazione)
4- Nel ciclo successivo, è necessario iniziare a selezionare da dove precedente loop terminato, ad esempio, la seconda query deve selezionare i successivi 50000 record e così via.
È possibile specificare la vostra selezione indice iniziale da questa dichiarazione query SQL:
SELECT * FROM mytable somefield LIMIT 50000 OFFSET 0;
allora si otterrà l'intero dati che si desidera.
NOTA: fare un test per vedere quale è il numero massimo di record può essere caricato in 60 secondi, questo diminuirà i loop e, quindi, le prestazioni aumentate.
fonte
2014-07-21 05:19:12
nella mia tabella ogni inserimento di secondi sta succedendo. Quindi l'indicizzazione causerà la riduzione delle prestazioni delle query di inserimento –
@JinjuJoseph È possibile aggiungere un trigger sulle visite per aggiornare il valore desiderato in un'altra tabella e indicare i totali nel campo tot. Quindi dovresti selezionare il valore aggregato direttamente da lì. –