-
А есть ли разница в каких-то случаях, что писать внутри count? Может ли быть отличие count(*) от count(PK_name) , где PK_name - наименование поля primary key? Отличие в результатах (?!), в скорости исполнения? Что идеологически правильнее, почему?
-
Раз primary key не может быть null, то разницы в результате не должно быть.
-
ИМХО разница может быть в производительности для разных серверов. count(PK_name) может взять информацию и не из таблицы, а из индекса, что возможно шустрее. Хотя утверждать этого не возьмусь.
> [1] McSimm © (30.10.09 16:00)
Count-у вроде как пофиг null или не null.
-
каунт со звездой считает записи каунт с полем считает значения
-
> Piter (30.10.2009 15:51:00) [0]
Все зависит от результа, это ведь две разные функции, а не заменяющая одна другую. По скорости конечно count(*) быстрее, но при чем тут PK_name функции count это как то до лампочки. И конечно надо смотреть план выполнения.
-
и нулл это не значение
-
> Anatoly Podgoretsky © (30.10.09 16:23) [4]
> По скорости .. count(*) быстрее
В версионниках это может не соответствовать действительности.
-
> Sergey13 (30.10.2009 16:21:02) [2]
Не пофиг, результаты будут разные, только для ПК это бессмысленно, кроме возможной разницы в скорости.
-
> [7] Anatoly Podgoretsky © (30.10.09 16:30)
Да, действительно, проверил сейчас - считает только NOT NULL значения. Как то никогда об этом не задумывался.
> [2] Sergey13 © (30.10.09 16:21) был не прав
-
> Сергей М. (30.10.2009 16:28:06) [6]
Читай про план, я писал
-
Медвежонок Пятачок © (30.10.09 16:23) [3] каунт со звездой считает записи каунт с полем считает значения
расшифруй свою мысль? Или приведи пример запроса, где count(*) и count(<имя PK>) будут давать разные значения?
-
> Piter © (30.10.09 18:20) [10]
В данном случае речь не о разнице в результатах, а о разных операциях. В случае с PK количество записей совпадет с количеством значений. Результат одинаковый. Но операции будут выполнены разные.
-
> с количеством значений
точнее с количеством not null значений.
-
расшифруй свою мысль?
Она не зашифрована. каунт со звездой считает строки. каунт с полем считает значения. нулл к значениям не относится.
-
Можно посиотреть в запросе
SELECT FLD1, FLD2, COUNT(FLD1), COUNT(FLD2), COUNT
-
>Inovet © (30.10.09 20:33) [14] у меня данный запрос не выводит ничего - значит, разницы никакой нет, так?))
-
> [15] Кщд (02.11.09 08:45) > >Inovet © (30.10.09 20:33) [14] > у меня данный запрос не выводит ничего - значит, разницы > никакой нет, так?))
В чём разница выше отвечали, а запрос одлжен её показать, я всё же наверно такой имел ввиду
SELECT FLD1, COUNT(FLD1), COUNT(FLD2), COUNT
-
>Inovet © (02.11.09 10:09) [16] речь о том, что иллюстративность Вашего запроса весьма и весьма зависит от "магии данных" поэтому что именно он(запрос) призван доказать или опровергнуть - не ясно)
-
> [17] Кщд (02.11.09 11:36) > >Inovet © (02.11.09 10:09) [16] > речь о том, что иллюстративность Вашего запроса весьма и > весьма зависит от "магии данных" > поэтому что именно он(запрос) призван доказать или опровергнуть > - не ясно)
Не призван он ничего доказать или опровергнуть, а показать различные значения сабжа, если таковые найдутся, можно убрать HAVING и искать глазами.
-
>Inovet © (02.11.09 12:22) [18] Здесь(Медвежонок Пятачок © (30.10.09 16:23) [3]) всё понятно написано
>Не призван он ничего доказать или опровергнуть, а показать различные значения сабжа ещё раз: при отсутствии null-значений полей - искать нечего - различных значений просто не будет
|