Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 cxGrid + FetchAll + GridMode  [new]
AlexSmith
Guest
Есть табличка, которая содержит в себе 5млн. записей.
БД: MSSQL 2005

Cтавим на форму cxgrid1, создаем cxgrid1DBTableView, привязываем к нему DataSource.
К DataSource привязываем Query.

Делаем чтобы отображалось в cxGrid по 100 записей, cледующим образом:

cxGrid1DBTableView1.DataController.DataModeController.GridMode := True;
cxGrid1DBTableView1.DataController.DataModeController.GridModeBufferCount := 100;

MSQuery1.FetchAll := False;
MSQuery1.FetchRows := 100;

Приложение запускаем, отображается 100 записей, как только делаешь

MSQuery1.Close;

то понимаем,что Query пытается зафетчить все записи, которые только есть в ДатаСете и только после этого закрывается. (На это у него уходит порядка 1 минуты).

Делал Free у Query, тоже самое, впадает в минутный ступор.

Как сделать так, чтобы при частичном просмотре, Close у процедуры отрабатывал моментально, а недогружал все данные, которые не отобразил?
13 май 11, 17:37    [10649743]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 48752
AlexSmith
Как сделать так, чтобы при частичном просмотре, Close у процедуры отрабатывал моментально, а недогружал все данные, которые не отобразил?
пользоваться нормальным методом отбора данных -
select <fields>
  from <tables>
 where <conditions>
14 май 11, 08:14    [10651392]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9980
Блог
че то не верится , у меня в таблице 9214722 записей все нормально.... но правда у меня оракле с ODAC , но и с МССГЛ тоже самое должен быть!!

покажы код.....
14 май 11, 09:59    [10651448]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 48752
Ramin,

а ты where в запросе пишешь?
14 май 11, 10:46    [10651490]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12480
А зачем where, если человеку нужно отображать все записи порциями?

Возможно в момент закрытия у Вас выполняется какой-то код, про который вы забыли? А попробуйте отвязать грид от набора данных и переоткрыть запрос. Может это грид глючит?
14 май 11, 11:18    [10651531]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 48752
X11
А зачем where, если человеку нужно отображать все записи порциями?

Возможно в момент закрытия у Вас выполняется какой-то код, про который вы забыли? А попробуйте отвязать грид от набора данных и переоткрыть запрос. Может это грид глючит?
просматривать 5 миллионов записей даже порциями, без фильтра и сортировки - бред сивой кобылы
14 май 11, 14:58    [10652089]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
andreymx
Ramin,

а ты where в запросе пишешь?

интересно как это связано с вопросом ТС...
14 май 11, 18:31    [10652660]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
andreymx
X11
А зачем where, если человеку нужно отображать все записи порциями?

Возможно в момент закрытия у Вас выполняется какой-то код, про который вы забыли? А попробуйте отвязать грид от набора данных и переоткрыть запрос. Может это грид глючит?
просматривать 5 миллионов записей даже порциями, без фильтра и сортировки - бред сивой кобылы

14 май 11, 18:32    [10652664]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
схGrid
Guest
Q: TpFIBDataSet;
FetchAll - стоит False.

 GridViewData.DataController.DataModeController.GridModeBufferCount := 100;
 GridViewData.DataController.DataModeController.GridMode := true;
 Q.Open;

Смотрю SQL монитор тянутся все записи. Как сделать ограничение на 100 записей?
16 май 11, 12:28    [10657557]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
Если тема еще не закрыта, то хотелось бы оживить, поскольку проблема та же, только решения найти не удалось.

Есть компонент TOraQuery (ODAC), у которого FetchAll=False и FetchRows=300,
есть cxGrid, у cxGridDBTableView которого свойства GridMode=True и GridModeBufferCount=300.
В самом TOraQuery простой запрос по таблице, результатом выборки есть набор из 6 миллионов записей (к примеру).
При этих всех настройках набор открывается минут 5, хотя должен влет показать первые 300 записей.
Аналогично было реализовано на DOA-шных компонентах, все работало четко.

Студия 10.1 Berlin, ODAC версии 10.1.5, DevExpress версия 16.1.2
30 авг 18, 17:26    [21659250]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3845
Леонов Юрий,

Можно проверить, чтобы в коде при открытии не было команды на переход к последней записи датасета (да и вообще стоит обратить внимание на любые манипуляции с датасетом, гридом, сортировками и т.п.).
30 авг 18, 17:30    [21659255]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
JaDi,

Выполняется только <DataSet>.Open и он ждет пока не отфетчатся все записи. Только после этого начинает работать грид.
На самом датасете нет никаких дополнительных обработчиков событий.
31 авг 18, 08:03    [21659590]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12480
Проверь открытие НД без привязки к сетке.
31 авг 18, 09:51    [21659723]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
X11,

тоже самое. Никакой разницы((
31 авг 18, 10:32    [21659774]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
zinpub
Member

Откуда:
Сообщений: 272
OraSession.DisconnectedMode не True случайно ?
31 авг 18, 10:35    [21659776]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
zinpub,

нет, дефолтное значение стоит
31 авг 18, 10:52    [21659794]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12480
Леонов Юрий
X11,

тоже самое. Никакой разницы((


Т.е. проблема не в сетке :)

Проверить и убедится, что к НД TOraQuery более ничего не подключено.
Можно даже новый кинуть на форму и проверить время открытия прямо в дизайне.
31 авг 18, 11:06    [21659845]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
defecator
Member

Откуда:
Сообщений: 38837
похоже, что OraQuery выполняет запрос полностью,
а потом будет всего лишь фетчить из курсора число записей, равное указанному размеру буфера
31 авг 18, 11:22    [21659872]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
X11,

пробовал по разному. Для чистоты эксперимента создал новый проект, на форме только кнопка.
Жмакаем её, пытаемся выполнить запрос (сессия уже авторизирована). Результат отличается на доли секунд,
средний запрос на 400 тысяч записей выполняется около 10 секунд. Миллионники висят несколько минут.
31 авг 18, 11:36    [21659913]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
defecator
похоже, что OraQuery выполняет запрос полностью,
а потом будет всего лишь фетчить из курсора число записей, равное указанному размеру буфера


Так а я о чём... Почему он выполняет полностью, если FetchAll отключен?
31 авг 18, 11:37    [21659918]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
AJi
Member

Откуда: Москва
Сообщений: 71
Леонов Юрий,
Зачем на клиенте такое количество записей?
Я понимаю, что это не относится к вашему вопросу, но все же...
31 авг 18, 11:43    [21659940]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3845
Леонов Юрий,

потому что в самом оракловском запросе есть сортировка, которая должна выполнится до конца перед возвратом результата на клиент? Можно эту процедуру выполнить в каком-нибудь pl/sql developer'е и посмотреть, насколько быстро появляются первые результаты.
31 авг 18, 11:46    [21659954]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
Леонов Юрий
Member

Откуда: Украина, Харьков
Сообщений: 447
AJi
Леонов Юрий,
Зачем на клиенте такое количество записей?
Я понимаю, что это не относится к вашему вопросу, но все же...


Вот нужно)) Я сам не понимаю зачем, но нужно... Ну мое дело их вытянуть частями, а там пусть юзверь что хочет, то и делает с ними
31 авг 18, 11:50    [21659964]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
AJi
Member

Откуда: Москва
Сообщений: 71
Леонов Юрий,

А вы не пробовали использовать другой Dataset? Может быть действительно дело в OraQuery, как уже писали выше? Попробуйте на каком-нибудь FireDac.
31 авг 18, 11:53    [21659974]     Ответить | Цитировать Сообщить модератору
 Re: cxGrid + FetchAll + GridMode  [new]
defecator
Member

Откуда:
Сообщений: 38837
JaDi
Леонов Юрий,

потому что в самом оракловском запросе есть сортировка, которая должна выполнится до конца перед возвратом результата на клиент? Можно эту процедуру выполнить в каком-нибудь pl/sql developer'е и посмотреть, насколько быстро появляются первые результаты.

PL/SQL Developer использует компоненты DOA, а ТС утверждает, что они работают правильно
31 авг 18, 11:55    [21659978]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Delphi Ответить