Ускорьте получение больших наборов данных в FireDAC, предназначенных только для сохранения в виде потоков - PullRequest
0 голосов
/ 13 декабря 2018

Получение данных больших наборов данных в FireDAC кажется медленнее, чем должно быть.

Запрос SQL Server, который возвращает 15 000 строк, выполняется в течение 2 секунд в SQL Server Management Studio, но FDQuery (такжеподключен через собственный клиент SQL Server) требуется 12 секунд для его загрузки.Я пробовал разные настройки для FetchOptions (однонаправленный курсор, извлекать все записи и т. Д.), Но я не смог сократить эти 12 секунд.

Единственная цель для этого набора данных - сохранить его какпоток (он выполняется на сервере Datasnap, который возвращает данные обратно клиенту в виде потоков, загружаемых в FDMemTables).

FDQuery1.Open;
FDQuery1.SaveToStream(AStream, sfBinary);
FDQuery1.Close;

Известна ли вам более быстрая конфигурация для извлечения данных из SQL Server, которую вы намерены сохранять только в виде потоков (для последующей загрузки в FDMemTables на стороне клиента)?Не кажется логичным, что даже однонаправленный курсор занимает в 6 раз больше, чем прямой оператор SQL.

Спасибо.

...