sql >> Databasteknik >  >> RDS >> Mysql

I MySQL 5 är SELECT COUNT(1) FROM table_name väldigt långsam

Att räkna alla rader i en tabell är en mycket långsam operation; du kan inte påskynda det såvida du inte är beredd att hålla en räkning någon annanstans (och det kan naturligtvis bli osynkroniserat).

Människor som är vana vid MyISAM tenderar att tro att de får count(*) "gratis", men det är det inte riktigt. MyISAM fuskar genom att inte ha MVCC, vilket gör det ganska enkelt.

Frågan du visar gör en fullständig indexsökning av ett index som inte är null, vilket i allmänhet är det snabbaste sättet att räkna raderna i en innodb-tabell.

Det är svårt att gissa vad din applikation är utifrån informationen du har gett, men i allmänhet är det ok för användare (etc.) att se nära uppskattningar av antalet rader i stora tabeller.



  1. PDO-transaktionssats med infoga och hämta utdatafel

  2. Hur använder man LOAD DATA INFILE-satsen när filen är en annan plats?

  3. Uppdaterar från MYSQL till MYSQLI

  4. Jag vill att mysql-tabellen ska stödja två språk