Проблемы с производительностью при использовании TUniTable

Я занимаюсь преобразованием приложения базы данных Paradox, написанного на Delphi, для использования SQL Server 2008 R2. Мы используем компоненты UNIDAC от Devart для доступа к базе данных/таблицам. Тем не менее, я нахожу производительность довольно медленной. Например, в версии Paradox более или менее мгновенно открывается таблица (с использованием TTable) со 100 000 записей, но SQL Server (с использованием TUniTable) занимает примерно 2 секунды. Теперь я знаю, что это кажется немного, но есть 10 наборов данных TUniTable, которые открываются при создании формы, и все они содержат примерно одинаковое количество записей, поэтому в настоящее время для их открытия требуется чуть менее 20 секунд. У кого-нибудь есть советы по производительности?

Я использую Делфи 2007


person PDM    schedule 31.01.2012    source источник
comment
Это не имеет ничего общего с UniDAC. Вы не должны никогда использовать табличный доступ к базе данных SQL; это означает, что (почти для всех серверов) 100% данных передаются клиенту. Вместо этого вы должны использовать запросы и ограничивать извлекаемые данные определенным списком столбцов и предложением WHERE, которое уменьшает количество строк.   -  person Ken White    schedule 31.01.2012


Ответы (1)


ИМХО, UniDAC TUniTable это просто обертка TUniQuery. TUniTable open может привести к извлечению всех записей на SQL Server. Не знаю, как, но попробуйте изменить тип и/или местоположение курсора SQL Server.

Если еще не поздно, рассмотрите возможность использования AnyDAC и TADTable. Он использует технологию "Live Data Window", которая позволяет открывать и просматривать большие таблицы без значительных задержек, например, вызовы Open и Last всегда будут быстрыми. Мы перенесли несколько приложений BDE на AnyDAC и Firebird, TADTable работает очень хорошо.

person oodesigner    schedule 31.01.2012
comment
Предупреждение Кена Уайта по-прежнему актуально для AnyDAC, запрос (ориентированный на SQL) будет работать лучше, чем таблица (рекомендуется в основном для базы данных рабочего стола). - person menjaraz; 31.01.2012