Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Как узнать кол-во записей в запросе програмно?   Найти похожие ветки 

 
White ©   (2004-04-01 19:57) [0]

Через Query забираются записи из таблицы (процедуры) следут узнать сколько записей возвращает запрос. Как узнать.


 
Vlad ©   (2004-04-01 20:10) [1]


> White ©   (01.04.04 19:57)  

Часто Query.RecordCount помогает :-)


 
Vemer ©   (2004-04-02 00:08) [2]

Только FetchAll сделать не забудь.


 
DrPass ©   (2004-04-02 00:16) [3]

А умнее будет сперва выполнить аналогичный запрос, только с агрегатом count(*)


 
Ozone ©   (2004-04-02 07:27) [4]

TO DrPass ©[3]
Не согласен.


 
Кщд   (2004-04-02 08:49) [5]

Ozone ©   (02.04.04 07:27) [4]
так аргументируй


 
Sergey_Masloff   (2004-04-02 09:32) [6]

Ozone ©   (02.04.04 07:27) [4]
>Не согласен.
А зря. Конечно, если запрос очень "тяжелый" а возвращает гарантировано немного записей то RecordCount сойдет. Если запросом может быть select * from XXX то однозначно Count(*) так при фетче пары миллионов записей на клиента будет как минимум зависание а может и у датасета "морда треснуть"


 
Vemer ©   (2004-04-02 09:42) [7]

Еще быстрее будет Counnt(ID_Field).


 
Sergey_Masloff   (2004-04-02 09:51) [8]

Vemer ©   (02.04.04 09:42) [7]
>Еще быстрее будет Counnt(ID_Field).
Нет будет медленнее так как сервер будет проверять поле на NULL даже если оно объявлено как NOT NULL. Вернее не всякий сервер это будет проверять но в лучшем случае выйдет на скорость select count(*)

Каунт со звездочкой всегда оптимизирован на наибольшую производительность.


 
Ozone ©   (2004-04-02 10:20) [9]

TO Sergey_Masloff[6]
Я имел в виду вариант когда нужно "SELECT <not *> FROM ..."


 
Anatoly Podgoretsky ©   (2004-04-02 10:26) [10]

Sergey_Masloff   (02.04.04 09:32) [6]
Это только один аспект, а главный состоит в том, что два отдельных запроса в принципе совсем неправильно, количество записей может оказаться разным, точнее даже стоит считать, что оно разное. Речь не про однопользовательскую систему и не про систему с мелкой нагрузкой, а скажем про нормальную боевую систему. А вот RecordCount ошибки не даст, и не надо про большое количество записей, это тоже в принципе неверная работа, да и сомнение в данном счетчике как то не чувствуется.


 
Vlad ©   (2004-04-02 10:32) [11]

Действительно, кол-во записей может меняться постоянно, поэтому данные первого запроса (select count) могут быть не актуальными для второго (с основной выборкой). Тогда уж надо блокировать таблицу или делать соответствующий уровень изоляции транзакции.


 
Sergey_Masloff   (2004-04-02 10:39) [12]

Anatoly Podgoretsky ©, Vlad ©
Да я конечно знаю про этот момент. Я имею в виду вариант когда нужно узнать приблизительно кол-во записей. Обычно я делаю так: делаю select count(*) если количество - тысячи (сотни - настраивается) то отлуп "Критерий поиска не эффективен". Если немного то основной запрос и RecordCount. А так у нас справочник клиентов - миллионы (Vlad, ну ты ж знаешь ;-)) и какой-нибудь селект с like может и пару сотен тысяч притащить легко...


 
Vlad ©   (2004-04-02 10:42) [13]


> Sergey_Masloff   (02.04.04 10:39) [12]


> Vlad, ну ты ж знаешь ;-))

Знаю, знаю :-)
Только вот никак не могу придумать ситуацию когда жизненно необходимо вычислять Count для таких справочников...
;-)



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.068 c
7-1078860890
Ландграф Павел
2004-03-09 22:34
2004.05.02
Поскажите как узнать дату создания ветви в реестре


3-1081395619
ksa2002
2004-04-08 07:40
2004.05.02
Уникальня выборка с помощью SQL


4-1078988008
AlexS76
2004-03-11 09:53
2004.05.02
Как выбрать удаленный компьютер в диалоге


1-1081873552
Fred Perry
2004-04-13 20:25
2004.05.02
Как получить из clipboard а HTML-код фрагмнета,скопир.из браузера


1-1081688743
IrQX
2004-04-11 17:05
2004.05.02
Почему не устанавливается компонент?