Voglio un modo veloce per contare il numero di righe nella mia tabella che ha diversi milioni di righe. Ho trovato il post " MySQL: il modo più veloce per contare il numero di righe " su Stack Overflow, che sembrava risolvere il mio problema. Bayuah ha fornito questa risposta:
SELECT
table_rows "Rows Count"
FROM
information_schema.tables
WHERE
table_name="Table_Name"
AND
table_schema="Database_Name";
Il che mi è piaciuto perché sembra una ricerca anziché una scansione, quindi dovrebbe essere veloce, ma ho deciso di testarlo
SELECT COUNT(*) FROM table
per vedere quanta differenza di prestazioni ci fosse.
Purtroppo sto ricevendo risposte diverse come mostrato di seguito:
Domanda
Perché le risposte sono diverse per circa 2 milioni di righe? Immagino che la query che esegue una scansione completa della tabella sia il numero più accurato, ma c'è un modo per ottenere il numero corretto senza dover eseguire questa query lenta?
Ho corso ANALYZE TABLE data_302
, completato in 0,05 secondi. Quando ho eseguito nuovamente la query, ora ottengo un risultato molto più vicino di 34384599 righe, ma non è ancora lo stesso numero select count(*)
delle righe 34906061. Analizza il ritorno della tabella immediatamente ed elabora in background? Sento che vale la pena ricordare che si tratta di un database di test e al momento non è stato scritto.
A nessuno importa se è solo un caso di dire a qualcuno quanto è grande una tabella, ma volevo passare il conteggio delle righe a un po 'di codice che avrebbe usato quella figura per creare una query asincrona "di uguali dimensioni" per interrogare il database in parallelo, simile al metodo mostrato in Aumentare le prestazioni della query lenta con l'esecuzione della query parallela di Alexander Rubin. Così com'è, otterrò solo l'ID più alto SELECT id from table_name order by id DESC limit 1
e spero che i miei tavoli non vengano troppo frammentati.
NUM_ROWS
colonna