Tutti sanno che, nelle tabelle che utilizzano InnoDB come motore, query simili SELECT COUNT(*) FROM mytable
sono molto inesatte e molto lente, specialmente quando la tabella diventa più grande e ci sono inserimenti / eliminazioni di riga costanti durante l'esecuzione della query.
A quanto ho capito, InnoDB non memorizza il conteggio delle righe in una variabile interna, motivo per questo problema.
La mia domanda è: perché è così? Sarebbe così difficile archiviare tali informazioni? È un'informazione importante da sapere in così tante situazioni. L'unica difficoltà che vedo se un tale conteggio interno sarebbe implementato è quando sono coinvolte le transazioni: se la transazione non è impegnata, conti le righe da essa inserite o no?
PS: Non sono un esperto di DB, sono solo qualcuno che ha MySQL come un semplice hobby. Quindi, se ho appena chiesto qualcosa di stupido, non essere eccessivamente critico: D.
SELECT COUNT(*) FROM ...
domande effettive sono precise. Se si preferisce, phpMyAdmin può essere configurato per utilizzare sempre il conteggio esatto delle righe a spese della velocità. Maggiori informazioni: stackoverflow.com/questions/11926259/...