2009-06-19 23 views
7

qualcuno può dirmi che è egli meglio appraoch in MySQL whin si tratta di trovare il numero di righe di una tabella: è meglio fareOttenere il conteggio delle righe per una tabella in MySQL?

SELECT COUNT(*) FROM TABLE_NAME 

o per cercare il numero di riga nella tabella TABLE nel INFORMATION_SCHEMA?

Questa operazione è frequente per calcolare i conteggi di impaginazione per le pagine?

Dovrei aggiungere che le tabelle avranno al massimo poche migliaia di righe.

Grazie

Martin O'Shea.

+0

Per alcune migliaia di righe, il conteggio (*) funzionerà quasi istantaneamente. – Hardwareguy

risposta

18

In MyISAM, questa query:

SELECT COUNT(*) 
FROM TABLE_NAME 

è immediata, dal momento che è conservato nei metadati tavolo, quindi è quasi libero di rilasciare questa query e sarà sempre ottenere il risultato corretto.

In InnoDB, questa query conterrà le righe una alla volta che potrebbe richiedere del tempo.

Quindi, se non è necessario il valore esatto di COUNT(*), è possibile interrogare INFORMATION_SCHEMA.

+1

Penso che dato che ho bisogno di calcolare l'impaginazione usando il conteggio delle righe/il conteggio delle pagine, sulle tabelle InnoDB il modo migliore è usare il INFORMATION_SCHEMA. Il conteggio richiederebbe solo millisecondi, ma è ancora un overhead se diversi utenti accedono alla stessa tabella per la navigazione. –

+0

@MartinOShea: esattamente – Quassnoi

+0

Grazie per il vostro aiuto. –

1

Considererei anche l'utilizzo di SQL_CALC_FOUND_ROWS e SELECT FOUND_ROWS() se si trova COUNT(*) troppo lento.

Problemi correlati