Sobes.tech
Middle

Co funguje rychleji: count(*) nebo count(název_sloupce)?

sobes.tech AI

Odpověď od AI

Ve většině systémů správy databází (DBMS) fungují count(*) a count(název_sloupce) podle odlišné logiky:

  • count(*) počítá všechny řádky, včetně těch, kde hodnoty ve sloupcích mohou být NULL.
  • count(název_sloupce) počítá pouze řádky, kde hodnota ve specifikovaném sloupci není NULL.

Z hlediska výkonu je count(*) obvykle rychlejší nebo alespoň stejně rychlý, protože databáze nemusí kontrolovat hodnoty v konkrétním sloupci, pouze počítá řádky. V některých optimalizovaných enginech může count(*) využívat metadata nebo indexy pro rychlý počet.

Příklad:

SELECT count(*) FROM users; -- počítá všechny řádky
SELECT count(email) FROM users; -- počítá pouze řádky, kde email není NULL

Stručně řečeno: pokud potřebujete pouze celkový počet řádků, je lepší použít count(*) — je to obvykle rychlejší a přesnější.