Текущий архив: 2002.11.14;
Скачать: CL | DM;
Вниз
Как организовать подкачку данных в Grid? Найти похожие ветки
← →
lovres © (2002-10-23 13:56) [0]Вопрос такой: у меня есть таблица из сорова полей, в которой порядка 2млн. записей, запросом в Delphi я к ней цепляю небольшую табличку и вывожу это всё в DBGrid, но из-за большого количества записей всё это дело жутко тормозит. Подскажите, пожалуйста, как сделать, чтобы запрос вытягивал сначала только малую часть записей, а при навигации по Grid"у подгружались новые и освобождались ранее полученные данные?
Наверное такая проблемма возникала у многих - поделитесь своими сообрадениями, а?
← →
Дуся © (2002-10-23 15:00) [1]БДЕ или АДО?
← →
NickBat © (2002-10-23 15:47) [2]Ты наверное используешь стандартный TTable?
Для серверных БД используй TQuery. И будет работать именно так, как тебе надо.
← →
lovres © (2002-10-23 15:58) [3]Я использую: ADOConnection, ADOQuery, DataSourse, dxDBGrid
Я не сказал, что вышеуказанную процедуру приходится выполнять часто, т.к. эта таблица связна с другой, по которой производится навигация, а уже эта (выборка из 2млн. записей) подтягивается к ней, т.е. при каждом перемещении по записям надо заново проводить выборку, что очень тормозит, вот я и хотел у вас спросить как организовать частичную выборку(например первые 100 строк запроса типа select top 100...) и, что самое интересное, как потом по мере надобности дозапрашивать остальные данные?
← →
Виталий Панасенко (2002-10-23 16:14) [4]И КТО эти 2 млн. записей и за какое время сможет просмотреть ?!
← →
Val © (2002-10-23 16:16) [5]согласен с Виталий Панасенко (23.10.02 16:14).
лучше соорудите какой-нибудь физуальный построитель фильтров для пользователя, пусть балуется.
← →
lovres © (2002-10-23 16:34) [6]to Виталий Панасенко
>И КТО эти 2 млн. записей и за какое время сможет просмотреть ?!
Первая таблица - это разные док-ты с номерами
По номеру выдается содержимое док-та из второй таблицы(2млн. которая). Таблицы все проиндексированые, очень приличный сервер, но при перемещении на следующий док-т, содержимое подтягивается где-то через 2 сек(прога пока в разработке, т.е. запускаю её только я, а когда ей будут все пользоваться одновременно тормозить будет сильнее)
to Val ©
>лучше соорудите какой-нибудь физуальный построитель фильтров
фильтровать ничего не надо, просто интересно глянуть на состав док-та, да и выборка содержимого документа - это ж и есть фильтр по коду док-та.
← →
Val © (2002-10-23 16:43) [7]можно подробнее примерное описание содержимого таблиц и логику работы?
← →
{bas} (2002-10-23 17:14) [8]Используй DAO или ODАC там можно сказать по сколько закачивать записей на клиента
← →
{bas} (2002-10-23 17:16) [9]Извиняюсь сервер перепутал - думал, что Oracle
← →
lovres © (2002-10-23 17:24) [10]док-ты:
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(пар-р из док-та)
← →
dim- © (2002-10-24 01:31) [11]Может не надо показывать вторую выборку при навигации, так как ее скорей всего не будут смотреть по каждой позиции, а если интересно посмотреть по позиции, тогда ее и открывай.
← →
777 © (2002-10-24 01:48) [12]ADOQuery.CursorLocation:=clUseServer; - подойдет?
← →
ЮЮ © (2002-10-24 04:08) [13]А, например, в SQL Explorer второй запрос долго выполняется? И сравни время при повторном выполнении того же запроса и при исправлении значения параметра.
Страницы: 1 вся ветка
Текущий архив: 2002.11.14;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.018 c