powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / count(*) vs служебный ответ
6 сообщений из 6, страница 1 из 1
count(*) vs служебный ответ
    #39090053
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После выполнения любого select мускул отдает служебное сообщение сколько рядов он нашел.
Чтобы узнать сколько рядов всего было найдено по сложному запросу достаточно регулярником убить конструкцию limit.

Но в интернете пишут, что получение информации количества строк таким образом очень сильно грузит базу и по сути вычисления каждый раз проводятся дважды.
В качестве лечения задачи производится агитация на использование select count(*) или select count(1) если есть вероятность подмешивания null-полей

Следуя этой рекомендации все простые селекты удалось с легкостью вылечить обычной заменой регулярником всего, что расположено между select .... from, но для сложных запросов такой трюк не канает.

Вопрос: есть ли хоть какой-то смысл для достижения экономии вычислительных ресурсов обертывать весь запрос в
Код: sql
1.
select count(*) с from (тут любой сложный селект) x


или в подобных случаях для получения количества записей проще действовать как и раньше - выполнять два раза, просто во втором случае подтирать limit регулярником?
...
Рейтинг: 0 / 0
count(*) vs служебный ответ
    #39090067
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня стойкое ощущение, что это недавно обсуждали.
Там еще про SQL_CALC_FOUND_ROWS было.

Если кратко, то нужно пробовать. В разных случаях разные варианты дают выигрыш.
...
Рейтинг: 0 / 0
count(*) vs служебный ответ
    #39090072
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixselect count(*) или select count(1) если есть вероятность подмешивания null-полейПро null-поля ерунда какая-то. Ни count(*), ни count(1) не зависят от содержимого полей и от их статуса NULL/NOT NULL.
...
Рейтинг: 0 / 0
count(*) vs служебный ответ
    #39090111
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftУ меня стойкое ощущение, что это недавно обсуждали.
Там еще про SQL_CALC_FOUND_ROWS было.

Если кратко, то нужно пробовать. В разных случаях разные варианты дают выигрыш.

Да, эти две темы к одной и той же "песне", но в данном случае более узкий и более конкретный вопрос про обертывание с count(*)
Дает и оно что-то или не дает.

Как бы

Код: sql
1.
select count(*) from t


vs
Код: sql
1.
select count(*) from (select * from t) x



Не хотел добавлять новое сообщение в той теме, иначе по старой доброй традиции этого форума, опять смешали бы люди, мухи, котлеты, варенье...
В данном случае вопрос очень узкий - про конкретно обертывания, а не про стратегию.
...
Рейтинг: 0 / 0
count(*) vs служебный ответ
    #39090138
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на всякий случай кину ссылку на ту тему, где обсуждались варианты стратегий с count(*)
тема была очень полезной

18171516
...
Рейтинг: 0 / 0
count(*) vs служебный ответ
    #39090207
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixКак бы

Код: sql
1.
select count(*) from t



vs
Код: sql
1.
select count(*) from (select * from t) x

Если вопрос ставить именно так узко, то я бы боролся за первый вариант, ибо в конкретных ситуациях они могут быть либо равны, либо первый быстрее (если оптимизатор решит материализовать подзапрос во втором запросе). Но не представляю такого, чтобы быстрее оказался второй запрос.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / count(*) vs служебный ответ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]