Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co jest lepsze w MYSQL count(*) czy count(1)?

To jest odpowiedź MySQL.

Działają dokładnie tak samo - chyba że używasz MyISAM, wtedy specjalny przypadek dla COUNT(*) istnieje. Zawsze używam COUNT(*) w każdym razie.

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

Dla MyISAM tabele, COUNT(*) jest zoptymalizowany do bardzo szybkiego powrotu, jeśli SELECT pobiera z jednej tabeli, nie są pobierane żadne inne kolumny i nie ma WHERE klauzula. Na przykład:

mysql> SELECT COUNT(*) FROM student;

Ta optymalizacja dotyczy tylko MyISAM tabele, ponieważ dla tego mechanizmu przechowywania przechowywana jest dokładna liczba wierszy, a dostęp do nich można uzyskać bardzo szybko. COUNT(1) podlega tej samej optymalizacji tylko wtedy, gdy pierwsza kolumna jest zdefiniowana jako NOT NULL .

###EDITNiektórzy z was mogli przegapić mroczną próbę poczucia humoru. Wolę zachować to jako pytanie bez duplikatów na każdy dzień, w którym MySQL zrobi coś innego niż SQL Server. Oddałem więc głos za ponownym otwarciem pytania (z wyraźnie błędną odpowiedzią).

Powyższa optymalizacja MyISAM dotyczy w równym stopniu

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

Tak więc prawdziwa odpowiedź brzmi:zawsze to samo.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL odnajdujące wartości w ciągu znaków oddzielonych przecinkami

  2. Uzyskiwanie pierwszego dnia tygodnia w MySql za pomocą Week No

  3. Jak korzystać z kreatora bazy danych MySQL cPanel

  4. TABELA UPUSZCZANIA MySQL

  5. Jak przyznać wszystkie uprawnienia w bazie danych w MySQL?