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