|
|
|
Select по большой таблице
|
|||
|---|---|---|---|
|
#18+
Я заранее извеняюсь, если не потеме. Есть большая таблица по которой надо сделать select * from MyBigTable. Не спрашивайте пожалуйста зачем, не мая прихоть. Выполнение запроса конечно будет долгим. Подскажите можно ли с помощью курсора по этой таблице возвращать не все строки разом, а последовательно(строка за строкой). У меня ASE 12.5. У программистов С# и ODBC. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 16:08 |
|
||
|
Select по большой таблице
|
|||
|---|---|---|---|
|
#18+
cherrex_Den, Действительно, не мая прихоть. Октябрь уж кончается.... Почему ты считаешь что этот запрос будет долгим? Если в нем нету никаких подзапросов, связей с другими таблицами или сортировки, то сервер начнет выдавать результат практически сразу по получению запроса. Вот на сеть нагрузка будет - это да. Да и смысла в таких запросах... впрочем это ты и сам знаешь :) Если все-же сильно хочется разрезать таблицу на сегменты, то используй что-то типа такого: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 17:05 |
|
||
|
Select по большой таблице
|
|||
|---|---|---|---|
|
#18+
White OwlДействительно, не мая прихоть. Октябрь уж кончается.... Прошу прощения! есть такая беда! White OwlПочему ты считаешь что этот запрос будет долгим? Если в нем нету никаких подзапросов, связей с другими таблицами или сортировки, то сервер начнет выдавать результат практически сразу по получению запроса. Я делаю(в SQL Advantage) "select * from MyBigTable"(без join, group итд), возвращается всего 12 000 строк, и запрос исполняется 30 секунд. Может я что-то недопонимаю? Еще раз повторюсь , идея не моя. Ну хотят наши программисты чтоб пользователь видел в гриде как он заполняется строками. Зачем это надо, сам не знаю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 18:23 |
|
||
|
Select по большой таблице
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: Выполнение запроса > конечно будет долгим. Подскажите можно ли с помощью курсора по этой > таблице возвращать не все строки разом, а последовательно(строка за > строкой). Можно и с помощью курсора. Но и без курсора вы в практчиески любом API, а в ODBC просто 100%, будете получать строки с сервера порциями по мере выполнения запроса. И можете также порциями их обрабатывать. Вообще, никакой запрос ни в каком виде не будет возвращать разом все записи. Если это происходит, то это какая-то либа высокоуровневая накапливает у себа последовательно построчно передаваемые данные (видимо, выделяя под это память) и потом выдаёт вам. В этом случае почти всегда можно спустится на уровень ниже и получать строками. И ещё, в протоколе TDS, используемом для общения клиента и сервера ASE, строки передаются также порциями, поэтому это, можно считать, базовая характеристика сервера. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 19:46 |
|
||
|
Select по большой таблице
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: > Я делаю(в SQL Advantage) "select * from MyBigTable"(без join, group > итд), возвращается всего 12 000 строк, и запрос исполняется 30 секунд. > Может я что-то недопонимаю? А чего, вполне себе нормально. > Еще раз повторюсь , идея не моя. Ну хотят наши программисты чтоб > пользователь видел в гриде как он заполняется строками. Зачем это надо, > сам не знаю! Ыдиоты, прости Господи ... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 19:48 |
|
||
|
Select по большой таблице
|
|||
|---|---|---|---|
|
#18+
MasterZivВообще, никакой запрос ни в каком виде не будет возвращать разом все записи. Если это происходит, то это какая-то либа высокоуровневая накапливает у себа последовательно построчно передаваемые данные (видимо, выделяя под это память) и потом выдаёт вам. В этом случае почти всегда можно спустится на уровень ниже и получать строками. т.е в SQL Advantage как раз такая "накапливалка" и работает? MasterZivМожно и с помощью курсора. Но и без курсора вы в практчиески любом API, а в ODBC просто 100%, будете получать строки с сервера порциями по мере выполнения запроса. И можете также порциями их обрабатывать. еще б подсказал бы кто как это сделать на C#. Случаем этим не DataReader занимается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2008, 20:20 |
|
||
|
Select по большой таблице
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: > т.е в SQL Advantage как раз такая "накапливалка" и работает? > Не знаю я, практически не пользовался им. В консольках обычно это делать не принять, потому как данных может быт ОЧЕНЬ МНОГО. > еще б подсказал бы кто как это сделать на C#. Случаем этим не DataReader > занимается? Да также, как и везде. Фетчите данные, получаете строку за строкой. C# - язык, я так понимаю, там несолько способов получить данные есть. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 00:57 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=45&tid=2011311]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 340ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...