Быстрый запрос SQL, но медленное получение результата

Я использую сервер базы данных Advantage от Sybase и на данный момент имею красивый быстрый запрос на левое соединение, который выполняется очень быстро. Проблема в том, что после выполнения запроса я хотел бы поместить результаты в строку. Я получил набор данных из 55000 записей. Теперь это занимает до 16 сек.положить его в строку. Для выполнения моего запроса потребовалось всего 8 мс. Моя первая попытка была такой:

    aADSQuery.Open
    aADSQuery.First
    WHILE not aADSQuery.eof do
    begin
       s := s + aADSQuery.FieldbyName('Name').asString+',';
       aADSQuery.Next;
    end;

После я попробовал это, чтобы избежать aADSQuery.next, но aADSQuery.RecordCount взял мне 9 сек.

    aADSQuery.Open
    aADSQuery.First
    Count := aADSQuery.RecordCount;
    for i:=0 to count-1 do
    begin
      aADSQuery.RecNo := i;
      aADSQuery.FieldbyName('Name').AsString; 
    end;

База данных проиндексирована с первичным ключом для идентификатора записи и индексируется для других столбцов. Я подумал о создании представления для подсчета моих записей, чтобы избежать количества записей, которое могло бы делать то же самое, что и количество sql. Но подсчет записей из представления занял то же время, что и раньше. Если я использую sql рассчитывать на мою базовую таблицу с 130000 записями, это занимает всего 200 мс. Но если я подсчитываю свою результирующую таблицу без использования представления, это занимает у меня 9 секунд. Я полагаю, что это так, потому что для новой временной таблицы результатов нет индексов. Кто-нибудь знает, как решить эту проблему должным образом или как получить более быстрый подсчет результатов?

Большое спасибо

6
задан André Dziurla 8 February 2012 в 14:09
поделиться