Sobes.tech
Middle

Кадом бештар кор мекунад: count(*) ё count(номи сутун)?

sobes.tech AI

Ҷавоб аз AI

Дар бештари системҳои идоракунии маълумот (DBMS), count(*) ва count(номи сутун) бо логикаи гуногун кор мекунанд:

  • count(*) ҳамаи сатрҳоро ҳисоб мекунад, аз ҷумла онҳое, ки арзишҳои сутунҳо метавонанд NULL бошанд.
  • count(номи сутун) танҳо он сатрҳоро ҳисоб мекунад, ки арзиши дар сутуни муайяншуда не NULL аст.

Аз рӯи суръатбахшӣ, count(*) одатан тезтар ё ҳадди ақал ҳамон суръат аст, зеро системаи идоракунии маълумот ба арзишҳои сутунҳои мушаххас тафтиш кардан лозим нест, танҳо сатрҳоро ҳисоб мекунад. Дар баъзе муҳитҳои оптимизатсияшуда, count(*) метавонад аз маълумотҳои мета ё индексҳо барои ҳисоб кардани зуд истифода кунад.

Масалан:

SELECT count(*) FROM users; -- ҳамаи сатрҳоро ҳисоб мекунад
SELECT count(email) FROM users; -- танҳо он сатрҳоро ҳисоб мекунад, ки дар онҳо email не NULL аст

Хулоса, агар танҳо шумораи умумии сатрҳоро лозим бошад, истифодаи count(*) беҳтар аст — ин одатан тезтар ва дақиқтар аст.