Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 16220|Отговор: 1

[Източник] Неправилно разбиране на count(0) и count(*) в SQL оператори

[Копирай линк]
Публикувано в 10.08.2017 г. 13:29:00 ч. | | |
Напоследък числовата функция се използва много и когато числото, което трябва да се брои, е сравнително голямо, се оказва, че 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 стойност.

Затова в бъдеще, когато правите всички статистики и не изключвате празни данни, е по-добре честно да използвате броя (*)!!








Предишен:Разликата между променливите за дефиниция на let и var в js
Следващ:Jquery реализира таблица за показване на до 10 части данни
Публикувано в 10.08.2017 г. 13:54:00 ч. |
преподава                 
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com