powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как в DBLIB (ASA9,10) получить число записей в таблице?
12 сообщений из 12, страница 1 из 1
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34641721
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi All.

есть весьма удаленный сервер ASA 9 (SQL Anywhere ).
есть прога писанная на BCB6 с использованием dblib.
обнаружил неприятный момент в классе DataSet.
количество записей в таблице получал через выполнение запроса "select count(*) from TABLE"
все было хорошо, пока не наткнулся на таблицу с весьма огромным количеством записей...
в общем такой способ определения кол.записей оказался неприемлем.

наверняка в dblib есть способ определить это иначе, более культурно...типа:
встать на последнюю запись:
dbpp_fetch( p_sqlca, CursorName, 1, (long int)-1, _sql_ptrtypechk_(SqlDA,SQLDA), 0, 0 );

и от куда то вытянуть ее номер....
но как???
подскажите Люди!

С уважением, Александр.
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34641793
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Mushnikov wrote:

> количество записей в таблице получал через выполнение запроса "select
> count(*) from TABLE"
> все было хорошо, пока не наткнулся на таблицу с весьма огромным
> количеством записей...
> в общем такой способ определения кол.записей оказался неприемлем.

А другого нет. Нельзя подсчитать, не считая. Брать из sys.systable,
конечно, быстро, но недостоверно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34641806
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пусть проверит ;)
а вдруг сойдет
select table_name, count from SYSTABLE
order by table_name
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34641859
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рыжий Котпусть проверит ;)
а вдруг сойдет
select table_name, count from SYSTABLE
order by table_name

должен быть API-шный способ.....
если в запросе нет условия - можно брать count из systable,
если есть условия, то все равно они укладываются в соответствующие индексы (если конечно нет GROUP BY), и т.д.
в общем, я думаю сайбесовский оптимизатор должен каким-то образом сообщать ядру сервера подобную инфу...
но его разработчики тщательно скрывают достойное описалово на DBLIB;-((((
в том что есть - жалкий перечень не очень важных функций.....остальное пришлось узнавать методом тыка - через ESQL!
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34641885
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Mushnikov wrote:

> должен быть API-шный способ.....

С каких х@#в?

> в общем, я думаю сайбесовский оптимизатор должен каким-то образом
> сообщать ядру сервера подобную инфу...

Никто никому ничего не должен, не говоря уж о том, что то, что
происходит в ядре, для тебя не предназначено. Кстати, почитай, для чего
предназначен sys.systable.count ;).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34641886
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Mushnikov пишет:

> обнаружил неприятный момент в классе DataSet.
> количество записей в таблице получал через выполнение запроса "select
> count(*) from TABLE"
> все было хорошо, пока не наткнулся на таблицу с весьма огромным
> количеством записей...
> в общем такой способ определения кол.записей оказался неприемлем.

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

> наверняка в dblib есть способ определить это иначе, более культурно...типа:
> встать на последнюю запись:

Нет, невозможно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34641956
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то что эта информация не постоянна и быстро устаревает - я понимаю...и то что мне никто ничего не должен - тоже.
но все-же сервак ее имеет...другое дело что она нам недоступна.
ладно - достоверность ее действительно настолько зыбка, что лучше обойтись без нее.

спасибо всем, кто откликнулся.
вопрос закрыт.
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34641982
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Mushnikov wrote:

> но все-же сервак ее имеет...другое дело что она нам недоступна.

Почему "недоступна"? Sys.systables.count.

> ладно - достоверность ее действительно настолько зыбка, что лучше
> обойтись без нее.

Разработчики сервера это давно поняли ;), поэтому sys.systables.count
обновляется только при checkpoint-ах.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34642020
Alexander Mushnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000

> ладно - достоверность ее действительно настолько зыбка, что лучше
> обойтись без нее.

Разработчики сервера это давно поняли ;), поэтому sys.systables.count
обновляется только при checkpoint-ах.
Posted via ActualForum NNTP Server 1.4

ага, спасибо.
да, надо уходить от этого понятия в браузерах....
но как убедить пользователя пользоваться фильтрами?
;-)
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34642134
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Mushnikov пишет:

> но все-же сервак ее имеет...другое дело что она нам недоступна.

Нет, сервак ее тоже не всегда имеет, или лучше сказать, всегда не имеет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34642905
Высоцкий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте SELECT COUNT(PKFIELD) FROM TABLE
Ежели есть первичный ключь - существенно быстрее отработает
...
Рейтинг: 0 / 0
Как в DBLIB (ASA9,10) получить число записей в таблице?
    #34644957
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хотите знать в любой момент количество записей в таблице, то попросите
об этом сервер. По умолчанию он не считает, а если повесить триггер на
вставку и удаление, который бы обновлял запись в таблице-счетчике
(увеличивая или уменьшая значение), то будет вам счастье...


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как в DBLIB (ASA9,10) получить число записей в таблице?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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