sql >> Databáze >  >> RDS >> Mysql

Co je lepší v MYSQL count(*) nebo count(1)?

Toto je odpověď MySQL.

Fungují úplně stejně – pokud nepoužíváte MyISAM, pak speciální případ pro COUNT(*) existuje. Vždy používám COUNT(*) každopádně.

https://dev.mysql.com/doc /refman/5.6/en/aggregate-functions.html#function_count

Pro MyISAM tabulky, COUNT(*) je optimalizován tak, aby se vrátil velmi rychle, pokud SELECT načítá z jedné tabulky, nenačítají se žádné další sloupce a neexistuje žádné WHERE doložka. Například:

mysql> SELECT COUNT(*) FROM student;

Tato optimalizace se týká pouze MyISAM tabulky, protože pro tento úložný stroj je uložen přesný počet řádků a lze k němu velmi rychle přistupovat. COUNT(1) podléhá stejné optimalizaci, pouze pokud je první sloupec definován jako NOT NULL .

###EDITNěkterým z vás možná unikla temná snaha o humor. Dávám přednost tomu, aby to zůstalo jako neduplicitní otázka pro každý takový den, kdy MySQL bude dělat něco jiného než SQL Server. Takže jsem hlasoval pro znovuotevření otázky (s jasně špatnou odpovědí).

Výše uvedená optimalizace MyISAM platí stejně pro

COUNT(*)
COUNT(1)
COUNT(pk-column)
COUNT(any-non-nullable-column)

Takže skutečná odpověď je, že jsou vždy totéž.




  1. Jak zkontrolovat, zda na serveru SQL existuje omezení?

  2. Spočítejte výskyty DISTINCT hodnot

  3. Připojte HP-UX Itanium k SQL Server

  4. Migrace PostgreSQL databází z On-Prem do cloudu pomocí AWS RDS