Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как организовать подкачку данных в Grid? [D6, MSSQL]


lovres ©   (2002-10-23 13:56:00) 

Вопрос такой: у меня есть таблица из сорова полей, в которой порядка 2млн. записей, запросом в Delphi я к ней цепляю небольшую табличку и вывожу это всё в DBGrid, но из-за большого количества записей всё это дело жутко тормозит. Подскажите, пожалуйста, как сделать, чтобы запрос вытягивал сначала только малую часть записей, а при навигации по Grid"у подгружались новые и освобождались ранее полученные данные?
Наверное такая проблемма возникала у многих - поделитесь своими сообрадениями, а?


ЮЮ   (2002-10-24 04:08:00) [1]

А, например, в SQL Explorer второй запрос долго выполняется? И сравни время при повторном выполнении того же запроса и при исправлении значения параметра.


777   (2002-10-24 01:48:00) [2]

ADOQuery.CursorLocation:=clUseServer; - подойдет?


dim-   (2002-10-24 01:31:00) [3]

Может не надо показывать вторую выборку при навигации, так как ее скорей всего не будут смотреть по каждой позиции, а если интересно посмотреть по позиции, тогда ее и открывай.


lovres   (2002-10-23 17:24:00) [4]

док-ты:
SELECT
OP.KOOP,//код операции
OP.NOME,//номер Док-та
OP.DATA,//дата
OP.TIPO,//тип операции
ORG.NAZV,//назв. контрагента
AG.NAZV,// назв. агента
OP.SUMM //сумма по док-ту
FROM OPERA OP
JOIN ORGAN ORG ON OP.KODO=ORG.KODO
JOIN AGENT AG ON ORG.KODA=AG.KODA
WHERE OP.TIPO="0"

содержимое(что подтягивается по док-ту):
SELECT
OPT.KOOP,//код операции
OPT.KODT,//код товара
OPT.KOLV,//кол-во
OPT.SPRO,//цена
TOV.NAZV//название
FROM OPTOV OPT
JOIN TOVAR TOV ON OPT.KODT=TOV.KODT
WHERE OPT.KOOP=:KOOP(пар-р из док-та)


{bas}   (2002-10-23 17:16:00) [5]

Извиняюсь сервер перепутал - думал, что Oracle


{bas}   (2002-10-23 17:14:00) [6]

Используй DAO или ODАC там можно сказать по сколько закачивать записей на клиента


Val   (2002-10-23 16:43:00) [7]

можно подробнее примерное описание содержимого таблиц и логику работы?


lovres   (2002-10-23 16:34:00) [8]

to Виталий Панасенко
>И КТО эти 2 млн. записей и за какое время сможет просмотреть ?!
Первая таблица - это разные док-ты с номерами
По номеру выдается содержимое док-та из второй таблицы(2млн. которая). Таблицы все проиндексированые, очень приличный сервер, но при перемещении на следующий док-т, содержимое подтягивается где-то через 2 сек(прога пока в разработке, т.е. запускаю её только я, а когда ей будут все пользоваться одновременно тормозить будет сильнее)

to Val ©
>лучше соорудите какой-нибудь физуальный построитель фильтров
фильтровать ничего не надо, просто интересно глянуть на состав док-та, да и выборка содержимого документа - это ж и есть фильтр по коду док-та.


Val   (2002-10-23 16:16:00) [9]

согласен с Виталий Панасенко (23.10.02 16:14).
лучше соорудите какой-нибудь физуальный построитель фильтров для пользователя, пусть балуется.


Виталий Панасенко   (2002-10-23 16:14:00) [10]

И КТО эти 2 млн. записей и за какое время сможет просмотреть ?!


lovres   (2002-10-23 15:58:00) [11]

Я использую: ADOConnection, ADOQuery, DataSourse, dxDBGrid
Я не сказал, что вышеуказанную процедуру приходится выполнять часто, т.к. эта таблица связна с другой, по которой производится навигация, а уже эта (выборка из 2млн. записей) подтягивается к ней, т.е. при каждом перемещении по записям надо заново проводить выборку, что очень тормозит, вот я и хотел у вас спросить как организовать частичную выборку(например первые 100 строк запроса типа select top 100...) и, что самое интересное, как потом по мере надобности дозапрашивать остальные данные?


NickBat   (2002-10-23 15:47:00) [12]

Ты наверное используешь стандартный TTable?
Для серверных БД используй TQuery. И будет работать именно так, как тебе надо.


Дуся   (2002-10-23 15:00:00) [13]

БДЕ или АДО?


Наверх

Титульная страница Поиск, карта сайта Написать письмо