Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
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 ); и от куда то вытянуть ее номер.... но как??? подскажите Люди! С уважением, Александр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:41 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
Alexander Mushnikov wrote: > количество записей в таблице получал через выполнение запроса "select > count(*) from TABLE" > все было хорошо, пока не наткнулся на таблицу с весьма огромным > количеством записей... > в общем такой способ определения кол.записей оказался неприемлем. А другого нет. Нельзя подсчитать, не считая. Брать из sys.systable, конечно, быстро, но недостоверно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:56 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
пусть проверит ;) а вдруг сойдет select table_name, count from SYSTABLE order by table_name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 16:58 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
Рыжий Котпусть проверит ;) а вдруг сойдет select table_name, count from SYSTABLE order by table_name должен быть API-шный способ..... если в запросе нет условия - можно брать count из systable, если есть условия, то все равно они укладываются в соответствующие индексы (если конечно нет GROUP BY), и т.д. в общем, я думаю сайбесовский оптимизатор должен каким-то образом сообщать ядру сервера подобную инфу... но его разработчики тщательно скрывают достойное описалово на DBLIB;-(((( в том что есть - жалкий перечень не очень важных функций.....остальное пришлось узнавать методом тыка - через ESQL! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:09 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
Alexander Mushnikov wrote: > должен быть API-шный способ..... С каких х@#в? > в общем, я думаю сайбесовский оптимизатор должен каким-то образом > сообщать ядру сервера подобную инфу... Никто никому ничего не должен, не говоря уж о том, что то, что происходит в ядре, для тебя не предназначено. Кстати, почитай, для чего предназначен sys.systable.count ;). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:15 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
Alexander Mushnikov пишет: > обнаружил неприятный момент в классе DataSet. > количество записей в таблице получал через выполнение запроса "select > count(*) from TABLE" > все было хорошо, пока не наткнулся на таблицу с весьма огромным > количеством записей... > в общем такой способ определения кол.записей оказался неприемлем. Это - единственный способ, хотя и он не дает достоверного количества записей в таблице. Точнее как только ты его получаешь, оно уже устаревает, потому что другие транзакции могут добавить или удалить записи. > наверняка в dblib есть способ определить это иначе, более культурно...типа: > встать на последнюю запись: Нет, невозможно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:15 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
то что эта информация не постоянна и быстро устаревает - я понимаю...и то что мне никто ничего не должен - тоже. но все-же сервак ее имеет...другое дело что она нам недоступна. ладно - достоверность ее действительно настолько зыбка, что лучше обойтись без нее. спасибо всем, кто откликнулся. вопрос закрыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:33 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
Alexander Mushnikov wrote: > но все-же сервак ее имеет...другое дело что она нам недоступна. Почему "недоступна"? Sys.systables.count. > ладно - достоверность ее действительно настолько зыбка, что лучше > обойтись без нее. Разработчики сервера это давно поняли ;), поэтому sys.systables.count обновляется только при checkpoint-ах. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:39 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
Dim2000 > ладно - достоверность ее действительно настолько зыбка, что лучше > обойтись без нее. Разработчики сервера это давно поняли ;), поэтому sys.systables.count обновляется только при checkpoint-ах. Posted via ActualForum NNTP Server 1.4 ага, спасибо. да, надо уходить от этого понятия в браузерах.... но как убедить пользователя пользоваться фильтрами? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 17:49 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
Alexander Mushnikov пишет: > но все-же сервак ее имеет...другое дело что она нам недоступна. Нет, сервак ее тоже не всегда имеет, или лучше сказать, всегда не имеет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2007, 18:18 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
Попробуйте SELECT COUNT(PKFIELD) FROM TABLE Ежели есть первичный ключь - существенно быстрее отработает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 09:46 |
|
||
|
Как в DBLIB (ASA9,10) получить число записей в таблице?
|
|||
|---|---|---|---|
|
#18+
Если хотите знать в любой момент количество записей в таблице, то попросите об этом сервер. По умолчанию он не считает, а если повесить триггер на вставку и удаление, который бы обновлял запись в таблице-счетчике (увеличивая или уменьшая значение), то будет вам счастье... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 19:29 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34641793&tid=2012017]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 357ms |

| 0 / 0 |
