powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Количество записей SELECT
19 сообщений из 44, страница 2 из 2
Количество записей SELECT
    #34317969
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOНе очень понимаю, как она поможет... объясните по подробнее пжлста.

быстрее. Данные не будут передаваться. Сервер только по таблице пробежитсья
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34317971
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
SnowMan2 пишет:

> Например выполнить еще один запрос
> SELECT Count(*) FROM table

Это бесполезно. Два запроса никак не связаны между собой.
Не факт что потом ТОТ запрос вернет именно ЭТО количество строк.

Насколько я понял, автору требуется примерное количество.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318052
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MasterZiv
Насоветовал тоже человеку проходить по миллиону записей. У него будет такие тормоза, что начальство не поймет.

Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не проходит по всем записям, у него другие методы. Результат - одно число, так что сетка не перегружается.
Если конечно в таблицу не вводят новые записи обновременнно 50 пользователей, и между запрсами
SELECT count(*) FROM Table
и
SELECT * FROM Table
никто не успел добавить или удалить запись (времени очень мало, доли секунды), то число записей будет правильным, иначе отличаться на число добавленных или удаленных (читай на 1).

Кол-во обращений к серверу не критачно, при хорошей работе их сотни или тысячи.

2 OIO
Тут исходя из задачи надо подумать, а надо ли пользователю миллион записей. Если он их все будет просматривать, то это одно дело. Хотя просмотр большого кол-ва информации не приводит к ее усвоению.
А если на основе этой информации надо строить каки-то интегральные составляющие (суммы, средние значения, min, max и др.) то надо пользоваться агрегатными функциями SQL и группировками. Если более сложнвми характеристиками, требующими программирования, то хранимими процедурами или функциями сервера.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318362
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не проходит по всем записям, у него другие методы.Это верно только для этого тривиального запроса, только для некоторых СУБД и только в некоторых случаях. В большинстве остальных случаев будет полный скан таблицы или индекса.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318484
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Я понял, что это не тривиальная задача, буду просто иметь это ввиду и постараюсь обойтись без количества записей.
2SnowMan2
select * from table - это просто как пример привел от которого отталкиваться, имелось ввиду все же определение количества записей, которые вернул select, отнюдь не с тривиальными условиями, которые несут нагрузку на сервер, и хотелось избежать повторного прохождения по таблице.
В любом случае, спасибо всем за помощь и обсуждение этого вопроса. Отрицательный ответ - тоже ответ.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318803
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2 пишет:

> Насоветовал тоже человеку проходить по миллиону записей. У него будет
> такие тормоза, что начальство не поймет.

Где ты взял про миллионы записей ? И где я такое советовал ?

> Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не
> проходит по всем записям, у него другие методы. Результат - одно число,
> так что сетка не перегружается.

Ну не всегда так происходит, и не везде. Не во всех СУБД. И в одной
СУБД не во всех случаях.

> Тут исходя из задачи надо подумать, а надо ли пользователю миллион
> записей. Если он их все будет просматривать, то это одно дело. Хотя

Ты когда нибудь просматривал миллионы записей ?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34318811
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIO пишет:

> Я понял, что это не тривиальная задача, буду просто иметь это ввиду и

Да неправильно ты понял, это ВООБЩЕ НЕВОЗМОЖНО. Задача нерешаема
в общем случае.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34320499
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivSnowMan2 пишет:

> Насоветовал тоже человеку проходить по миллиону записей. У него будет
> такие тормоза, что начальство не поймет.

Где ты взял про миллионы записей ? И где я такое советовал ?


В 8-ом сообщении от начала топика OIO пишет про миллион записей. После чего ты пишешь:
> тогда читай все записи с сервера и считай в процессе
Правильно, это единстенно правильный вариант.

MasterZiv> Тут исходя из задачи надо подумать, а надо ли пользователю миллион
> записей. Если он их все будет просматривать, то это одно дело. Хотя

Ты когда нибудь просматривал миллионы записей ?
Нет не просмативал. Я противник такого рассмотрения и после слова хотя идет текст о том, что нужно использовать агригатные функции и группировки чтобы видеть не исходные данные, а какие-то результаты.


miksoft
>SnowMan2
>Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не проходит по всем >записям, у него другие методы.

Это верно только для этого тривиального запроса, только для некоторых СУБД и только в некоторых случаях. В большинстве остальных случаев будет полный скан таблицы или индекса.


Специально провел эксперимент. Условия: Pentium IV, 1400 MHz, 256 Mb. Сервер MSDE 2000 (бесплатный). Таблица 159406 строк, 12 полей (в оновном целочисленные). Локальный вариант.

Код: plaintext
1.
2.
3.
4.
5.
6.
Запрос                                                      Результат    Время  Примечание
SELECT count(*) FROM CheckWork                                159406     <1сек  
SELECT count(*) FROM CheckWork WHERE Depart_ID=3              19265      <1ceк Есть индекс по Depart_ID
SELECT count(*) FROM CheckWork WHERE Depart_ID>3              140113     ~1 cек
SELECT count(*) FROM CheckWork WHERE CheckLoadKind_ID=56      110654     ~3cek Нет индекса по CheckLoadKind_ID
SELECT count(*) FROM CheckWork WHERE Student_ID>1 and 
Emp_ID>2 and CheckLoadKind_ID>3 and GS_ID>4 and Subj_ID>5     155981     ~1 cек Есть индекс по Emp_ID
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34320925
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2 miksoft
>SnowMan2
>Запрос SELECT count(*) FROM Table - выполняется мгновенно. Сервер не проходит по всем >записям, у него другие методы.

Это верно только для этого тривиального запроса, только для некоторых СУБД и только в некоторых случаях. В большинстве остальных случаев будет полный скан таблицы или индекса.


Специально провел эксперимент. Условия: Pentium IV, 1400 MHz, 256 Mb. Сервер MSDE 2000 (бесплатный). Таблица 159406 строк, 12 полей (в оновном целочисленные). Локальный вариант.

Код: plaintext
1.
2.
3.
4.
5.
6.
Запрос                                                      Результат    Время  Примечание
SELECT count(*) FROM CheckWork                                159406     <1сек  
SELECT count(*) FROM CheckWork WHERE Depart_ID=3              19265      <1ceк Есть индекс по Depart_ID
SELECT count(*) FROM CheckWork WHERE Depart_ID>3              140113     ~1 cек
SELECT count(*) FROM CheckWork WHERE CheckLoadKind_ID=56      110654     ~3cek Нет индекса по CheckLoadKind_ID
SELECT count(*) FROM CheckWork WHERE Student_ID>1 and 
Emp_ID>2 and CheckLoadKind_ID>3 and GS_ID>4 and Subj_ID>5     155981     ~1 cек Есть индекс по Emp_ID
Время выполнения ни о чем не говорит, да еще на таких копеечных объемах. План покажи.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34322803
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SnowMan2 пишет:

> Это верно только для этого тривиального запроса, только для некоторых
> СУБД и только в некоторых случаях. В большинстве остальных случаев будет
> полный скан таблицы или индекса.

> Специально провел эксперимент. Условия: Pentium IV, 1400 MHz, 256 Mb.
> Сервер MSDE 2000 (бесплатный). Таблица 159406 строк, 12 полей (в оновном
> целочисленные). Локальный вариант.

Ну и о чем это говорит ? Даже если это и так, как ты написал, я ЕЩЕ РАЗ
повторяю, что НЕ НА ВСЕХ СУБД, и НЕ НА ВСЕХ ЗАПРОСАХ это будет так.

Ладно, тему считаю закрытой, поскольку дальнейшее обсуждение бессмысленно
без конкретики СУБД, запросов, таблиц и пр.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34324086
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Да ты можешь его прилепить, для этого достаточно после этого SELECT-а
сделать еще один, SELECT @@rowcount.
Но смысла это делать нет никакого, потому что ты получишь его
только ПОСЛЕ выборки основного набора данных. А если ты уже выберишь
его, то ты уже будешь знать количество строк.
Точно? а по-моему будет 2 рекордсета переданы - фетчи какой хочешь... надо бы проверить..


3) в mssql можно юзать
Код: plaintext
1.
SELECT id FROM sysobjects
compute count(id)
4)
Код: plaintext
1.
2.
3.
4.
SELECT id,count(*),max(name) FROM sysobjects
group by id
with cube
order by id
первая запись во втором столбце - содержит количество строк.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34333675
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Палестинец...
Код: plaintext
1.
2.
3.
4.
SELECT id,count(*),max(name) FROM sysobjects
group by id
with cube
order by id
первая запись во втором столбце - содержит количество строк.

наконец то хоть одын нормальный ответ...Вы это чаво мужики ? Ни разу с такой фиговой задачей не сталкивались ? я даже подумал - во прикалываются :)


есть правда одно но, возможно это и имелось в ввиду...Что дескать возвращать по разным условиям (каунт и сам запрос) - в вопросе об этом вроде как ни слова...


с уважением
(круглый)
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34333703
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Так уже как бы выше обсуждалось, что count(*) - это здорово, но как потом профетчить этот результат, ведь он вернется после всех записей?
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34333851
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOТак уже как бы выше обсуждалось, что count(*) - это здорово, но как потом профетчить этот результат, ведь он вернется после всех записей?

уже выше показали - его можно вернуть как поле, а не как запись...минус подхода - Вы это поле будете обрабатывать в каждой запси возвращаемого рекордсета...

с уважением
(круглый)
ЗЫ
Задам самый вредный вопрос... Нафига Вам это всё ?
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34334041
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Я думаю, такой подход не буду использовать из-за необходимости возиться еще с одним полем - не удобно...
Просто мне было бы удобно знать количество записей до того как их выдавать.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34334070
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIO...Просто мне было бы удобно знать количество записей до того как их выдавать.

например 100 миллионов - пойдём экстремальным путём...

с уважением
(круглый)
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34334084
OIO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OIO
Гость
Я сейчас работаю на тестовой версии с 200.000 записей и то операции обновления, удаления занимают порядочно времени, что говорить про такие объемы...
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34334100
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OIOоперации обновления, удаления занимают порядочно времениЭто уже отдельная песня. При желании можно и одну запись удалять полдня.
...
Рейтинг: 0 / 0
Количество записей SELECT
    #34342404
Подскажите, пожалуйста начинающему.

Из таблицы делается выборка
Параметров запроса в операторе WHERE много.
Я делаю два запроса к базе данных.

Первым запросом к базе опередляется количество записей, удовлетворяющих параметрам, чтобы показать счетчик пользователю:
SELECT COUNT(*)
FROM items
WHERE ...


Вторым запросом в базе запрашиваются эти данные, с использованием LIMIT, чтобы можно было сделать постраничный вывод:
SELECT head, description, date_add
FROM items
WHERE ... LIMIT


Вопрос:
Можно ли совместить оба этих запроса? То есть, чтобы получить общее количество
записей в базе, удовлетворяющих параметрам, и сразу запросить часть из них.
У меня что-то не получается.
То есть примерно так:
SELECT COUNT(*), head, description, date_add
FROM items
WHERE ... LIMIT

Не хотелось бы делать несколько или вложенных запросов.
База MySQL.
Спасибо.
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Количество записей SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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