Sobes.tech
Middle

Кайсысы тезирек иштейт: count(*) же count(баған_аты)?

sobes.tech AI

AIден жооп

Көпчүлүк маалымат базасы башкаруу системаларында (count(*) жана count(аты_столбца)) иштөө логикасы айырмаланат:

  • count(*) бардык саптарды эсептейт, алардын ичинде баалуулуктары NULL болушу мүмкүн.
  • count(аты_столбца) белгиленген столбецтеги баалуулары NULL эмес саптарды гана эсептейт.

Өндүрүштүк көрсөткүчтөр боюнча, count(*) көбүнчө тезирээк же кеминде ошондой эле тез, анткени маалымат базасы конкреттүү столбецдин баалуулары менен иштебей, жөн гана саптарды эсептейт. Кээ бир оптимизацияланган кыймылдаткычтарда, count(*) тез эсептөө үчүн метадата же индекс колдонушу мүмкүн.

Мисал:

SELECT count(*) FROM users; -- бардык саптарды эсептейт
SELECT count(email) FROM users; -- email NULL эмес саптарды гана эсептейт

Кыскасы, эгер жөн гана жалпы саптар санын керек болсо, count(*) колдонуу жакшы — бул көбүнчө тез жана так болот.