Останнім часом числова функція використовується дуже часто, і коли кількість для підрахунку відносно велика, виявляється, що count(*) займає більше часу, а count(1) — менше.
Деякі документи містять такі твердження:
Якщо у вашій таблиці даних немає первинного ключа, тоді count(1) швидший за count(*). Якщо є первинний ключ, то первинний ключ (спільний первинний ключ) також швидший за count(*). Якщо у вашій таблиці лише одне поле, тоді count(*) — найшвидше count(*) count(1) Порівняйте ці два варіанти. Головне — підрахувати поля даних, що відповідають (1). Якщо count(1) — це полііндекс, id, то він має бути швидшим count(1). Але різниця дуже мала. Оскільки count(*), поле автоматично оптимізується для вказівки до. Тож немає потреби рахувати(?), використовувати count(*), SQL допоможе вам завершити оптимізацію
Деталі підрахунку: count(*) поверне загальну кількість усіх рядків у таблиці, включаючи рядки з нульовим значенням,Однак count (назва стовпця) поверне загальну кількість усіх рядків у таблиці, крім null(Також враховуються стовпці з значеннями за замовчуванням). Різна назва стовпця, результатом буде результат після видалення нульового значення та дублікатів даних
Раніше я не знав, що в блозі сказано, що всім рекомендують використовувати count(0) і що ефективність запитів досить висока тощо
Сьогодні встановлено, що використання count(0) є хибним уявленням!!
count(0) Перший стовпець статистики не є порожнім
Не використовуйте number(назва стовпця) або count(константа) замість count(*),
count(*) — це синтаксис для стандартної кількості рядків, визначених SQL92, який не має нічого спільного з базою даних, NULL і не-NULL.
Примітка: count(*) рахує рядки з NULL-значенням, тоді як count(назва стовпця) не рахує рядки з NULL-значенням.
Тому в майбутньому, коли ви робите всю статистику і не виключаєте порожні дані, краще чесно використовувати кількість (*)!!
|