![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Есть ли разница, что указывать вместо звездочки в count(*) ?
Piter © (2009-10-30 15:51:00)А есть ли разница в каких-то случаях, что писать внутри count?
Может ли быть отличиеcount(*)отcount(PK_name), где PK_name - наименование поля primary key?
Отличие в результатах (?!), в скорости исполнения? Что идеологически правильнее, почему?
Inovet (2009-10-30 20:33:00) [21]Можно посиотреть в запросе
SELECT FLD1, FLD2, COUNT(FLD1), COUNT(FLD2), COUNT(*)
FROM TBL
GROUP BY FLD1, FLD2
HAVING COUNT(FLD1) <> COUNT(FLD2) OR COUNT(FLD2) <> COUNT(*)
Медвежонок Пятачок (2009-10-30 19:42:00) [22]расшифруй свою мысль?
Она не зашифрована.
каунт со звездой считает строки.
каунт с полем считает значения.
нулл к значениям не относится.
McSimm (2009-10-30 18:33:00) [23]
> с количеством значений
точнее с количеством not null значений.
McSimm (2009-10-30 18:31:00) [24]
> Piter © (30.10.09 18:20) [10]
В данном случае речь не о разнице в результатах, а о разных операциях.
В случае с PK количество записей совпадет с количеством значений. Результат одинаковый. Но операции будут выполнены разные.
Piter (2009-10-30 18:20:00) [25]Медвежонок Пятачок © (30.10.09 16:23) [3]
каунт со звездой считает записи
каунт с полем считает значения
расшифруй свою мысль? Или приведи пример запроса, где count(*) и count(<имя PK>) будут давать разные значения?
Anatoly Podgoretsky (2009-10-30 16:52:00) [26]> Сергей М. (30.10.2009 16:28:06) [6]
Читай про план, я писал
Sergey13 (2009-10-30 16:40:00) [27]> [7] Anatoly Podgoretsky © (30.10.09 16:30)
Да, действительно, проверил сейчас - считает только NOT NULL значения. Как то никогда об этом не задумывался.
> [2] Sergey13 © (30.10.09 16:21)
был не прав
Anatoly Podgoretsky (2009-10-30 16:30:00) [28]> Sergey13 (30.10.2009 16:21:02) [2]
Не пофиг, результаты будут разные, только для ПК это бессмысленно, кроме возможной разницы в скорости.
Сергей М. (2009-10-30 16:28:00) [29]
> Anatoly Podgoretsky © (30.10.09 16:23) [4]
> По скорости .. count(*) быстрее
В версионниках это может не соответствовать действительности.
Медвежонок Пятачок (2009-10-30 16:23:00) [30]и нулл это не значение
Anatoly Podgoretsky (2009-10-30 16:23:00) [31]> Piter (30.10.2009 15:51:00) [0]
Все зависит от результа, это ведь две разные функции, а не заменяющая одна другую.
По скорости конечно count(*) быстрее, но при чем тут PK_name функции count это как то до лампочки.
И конечно надо смотреть план выполнения.
Медвежонок Пятачок (2009-10-30 16:23:00) [32]каунт со звездой считает записи
каунт с полем считает значения
Sergey13 (2009-10-30 16:21:00) [33]ИМХО разница может быть в производительности для разных серверов. count(PK_name) может взять информацию и не из таблицы, а из индекса, что возможно шустрее. Хотя утверждать этого не возьмусь.
> [1] McSimm © (30.10.09 16:00)
Count-у вроде как пофиг null или не null.
McSimm (2009-10-30 16:00:00) [34]Раз primary key не может быть null, то разницы в результате не должно быть.