powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Select по большой таблице
8 сообщений из 8, страница 1 из 1
Select по большой таблице
    #35625967
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я заранее извеняюсь, если не потеме.
Есть большая таблица по которой надо сделать select * from MyBigTable. Не спрашивайте пожалуйста зачем, не мая прихоть. Выполнение запроса конечно будет долгим. Подскажите можно ли с помощью курсора по этой таблице возвращать не все строки разом, а последовательно(строка за строкой).

У меня ASE 12.5.
У программистов С# и ODBC.

Заранее спасибо!
...
Рейтинг: 0 / 0
Select по большой таблице
    #35626137
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den,

Действительно, не мая прихоть. Октябрь уж кончается....

Почему ты считаешь что этот запрос будет долгим? Если в нем нету никаких подзапросов, связей с другими таблицами или сортировки, то сервер начнет выдавать результат практически сразу по получению запроса. Вот на сеть нагрузка будет - это да.
Да и смысла в таких запросах... впрочем это ты и сам знаешь :)

Если все-же сильно хочется разрезать таблицу на сегменты, то используй что-то типа такого:
Код: plaintext
1.
set rowcount  1000 
select * from BigTable where PK>@last_pk_in_previous_segment order by PK
Вытянул очередной кусок на клиента, обработал его, потом используя последний PK в полученом сегменте, заказываешь следующий.
...
Рейтинг: 0 / 0
Select по большой таблице
    #35626372
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlДействительно, не мая прихоть. Октябрь уж кончается....

Прошу прощения! есть такая беда!

White OwlПочему ты считаешь что этот запрос будет долгим? Если в нем нету никаких подзапросов, связей с другими таблицами или сортировки, то сервер начнет выдавать результат практически сразу по получению запроса.

Я делаю(в SQL Advantage) "select * from MyBigTable"(без join, group итд), возвращается всего 12 000 строк, и запрос исполняется 30 секунд. Может я что-то недопонимаю?

Еще раз повторюсь , идея не моя. Ну хотят наши программисты чтоб пользователь видел в гриде как он заполняется строками. Зачем это надо, сам не знаю!
...
Рейтинг: 0 / 0
Select по большой таблице
    #35626497
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den wrote:

Выполнение запроса
> конечно будет долгим. Подскажите можно ли с помощью курсора по этой
> таблице возвращать не все строки разом, а последовательно(строка за
> строкой).

Можно и с помощью курсора. Но и без курсора вы в практчиески любом
API, а в ODBC просто 100%, будете получать строки с сервера порциями по мере
выполнения запроса. И можете также порциями их обрабатывать.
Вообще, никакой запрос ни в каком виде не будет возвращать разом все записи.
Если это происходит, то это какая-то либа высокоуровневая накапливает
у себа последовательно построчно передаваемые данные (видимо, выделяя
под это память) и потом выдаёт вам. В этом случае почти всегда можно
спустится на уровень ниже и получать строками.

И ещё, в протоколе TDS, используемом для общения клиента и сервера ASE,
строки передаются также порциями, поэтому это, можно считать, базовая
характеристика сервера.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Select по большой таблице
    #35626499
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den wrote:

> Я делаю(в SQL Advantage) "select * from MyBigTable"(без join, group
> итд), возвращается всего 12 000 строк, и запрос исполняется 30 секунд.
> Может я что-то недопонимаю?

А чего, вполне себе нормально.

> Еще раз повторюсь , идея не моя. Ну хотят наши программисты чтоб
> пользователь видел в гриде как он заполняется строками. Зачем это надо,
> сам не знаю!

Ыдиоты, прости Господи ...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Select по большой таблице
    #35626533
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivВообще, никакой запрос ни в каком виде не будет возвращать разом все записи.
Если это происходит, то это какая-то либа высокоуровневая накапливает
у себа последовательно построчно передаваемые данные (видимо, выделяя
под это память) и потом выдаёт вам. В этом случае почти всегда можно
спустится на уровень ниже и получать строками.

т.е в SQL Advantage как раз такая "накапливалка" и работает?

MasterZivМожно и с помощью курсора. Но и без курсора вы в практчиески любом
API, а в ODBC просто 100%, будете получать строки с сервера порциями по мере
выполнения запроса. И можете также порциями их обрабатывать.

еще б подсказал бы кто как это сделать на C#. Случаем этим не DataReader занимается?
...
Рейтинг: 0 / 0
Select по большой таблице
    #35626745
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den wrote:

> т.е в SQL Advantage как раз такая "накапливалка" и работает?
>

Не знаю я, практически не пользовался им.
В консольках обычно это делать не принять, потому как данных может
быт ОЧЕНЬ МНОГО.

> еще б подсказал бы кто как это сделать на C#. Случаем этим не DataReader
> занимается?

Да также, как и везде. Фетчите данные, получаете строку за строкой.

C# - язык, я так понимаю, там несолько способов получить данные есть.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Select по большой таблице
    #35626899
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все понял! Всем спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Select по большой таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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