Должен ли я использовать count (*) или count (a, b, c .., z) при подсчете количества строк в запросе? - PullRequest
1 голос
/ 24 ноября 2010

Должен ли я использовать select count(*) from XXX или select count(a, b, c.., z) from XXX?

при подсчете количества строк в запросе, какая из них быстрее (если в них есть какая-либо разница)?

Ответы [ 3 ]

7 голосов
/ 24 ноября 2010

На самом деле они разные. Например, если a имеет значения NULL, вы получите только количество записей, где a не равно нулю. Таким образом, вы должны использовать slect count (*) для подсчета количества строк в запросе

4 голосов
/ 24 ноября 2010

Ну, lcount (a, b, c, d) выдаст синтаксическую ошибку в большинстве баз данных, вам понадобится count (a), count (b), count (c), count (d).

Если вы хотите подсчитать количество строк, используйте счетчик (*).

Если вы хотите посчитать, сколько строк, имеющих ненулевое значение для определенного столбца, подсчитайте (столбцы).

2 голосов
/ 24 ноября 2010

Потому что с COUNT(*) oracle подсчитывает количество строк, а с COUNT(field) он подсчитывает количество значений в field, что NOT NULL.Что, очевидно, медленнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...