
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
29.10.2015, 14:04:22
|
|||
|---|---|---|---|
count(*) vs служебный ответ |
|||
|
#18+
После выполнения любого select мускул отдает служебное сообщение сколько рядов он нашел. Чтобы узнать сколько рядов всего было найдено по сложному запросу достаточно регулярником убить конструкцию limit. Но в интернете пишут, что получение информации количества строк таким образом очень сильно грузит базу и по сути вычисления каждый раз проводятся дважды. В качестве лечения задачи производится агитация на использование select count(*) или select count(1) если есть вероятность подмешивания null-полей Следуя этой рекомендации все простые селекты удалось с легкостью вылечить обычной заменой регулярником всего, что расположено между select .... from, но для сложных запросов такой трюк не канает. Вопрос: есть ли хоть какой-то смысл для достижения экономии вычислительных ресурсов обертывать весь запрос в Код: sql 1. или в подобных случаях для получения количества записей проще действовать как и раньше - выполнять два раза, просто во втором случае подтирать limit регулярником? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2015, 14:14:18
|
|||
|---|---|---|---|
count(*) vs служебный ответ |
|||
|
#18+
У меня стойкое ощущение, что это недавно обсуждали. Там еще про SQL_CALC_FOUND_ROWS было. Если кратко, то нужно пробовать. В разных случаях разные варианты дают выигрыш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2015, 14:16:21
|
|||
|---|---|---|---|
count(*) vs служебный ответ |
|||
|
#18+
Lumixselect count(*) или select count(1) если есть вероятность подмешивания null-полейПро null-поля ерунда какая-то. Ни count(*), ни count(1) не зависят от содержимого полей и от их статуса NULL/NOT NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2015, 14:42:36
|
|||
|---|---|---|---|
count(*) vs служебный ответ |
|||
|
#18+
miksoftУ меня стойкое ощущение, что это недавно обсуждали. Там еще про SQL_CALC_FOUND_ROWS было. Если кратко, то нужно пробовать. В разных случаях разные варианты дают выигрыш. Да, эти две темы к одной и той же "песне", но в данном случае более узкий и более конкретный вопрос про обертывание с count(*) Дает и оно что-то или не дает. Как бы Код: sql 1. vs Код: sql 1. Не хотел добавлять новое сообщение в той теме, иначе по старой доброй традиции этого форума, опять смешали бы люди, мухи, котлеты, варенье... В данном случае вопрос очень узкий - про конкретно обертывания, а не про стратегию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2015, 14:55:30
|
|||
|---|---|---|---|
count(*) vs служебный ответ |
|||
|
#18+
на всякий случай кину ссылку на ту тему, где обсуждались варианты стратегий с count(*) тема была очень полезной 18171516 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2015, 15:35:49
|
|||
|---|---|---|---|
count(*) vs служебный ответ |
|||
|
#18+
LumixКак бы Код: sql 1. vs Код: sql 1. Если вопрос ставить именно так узко, то я бы боролся за первый вариант, ибо в конкретных ситуациях они могут быть либо равны, либо первый быстрее (если оптимизатор решит материализовать подзапрос во втором запросе). Но не представляю такого, чтобы быстрее оказался второй запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1832563]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
85ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 379ms |

| 0 / 0 |
