• 0
0xdeadc0de

SQLite Тормоза с TADTable и SQLite при переборе 100 000 записей

Вопрос

Наблюдаю жесточайшие тормоза при переборе SQLite-таблицы на 100 000 записей. 
 
Алгоритм перебора:
procedure TForm1.btn_ShowAllRecordsClick(Sender: TObject);
var
  FieldID, FieldName: TField;
  I: Integer;
  TableItem: TADTable;
begin
  TableItem := TADTable.Create(nil);
  try
    TableItem.Connection := ADConnection1;
    TableItem.Open('item');
    FieldID := TableItem.FieldByName('id');
    FieldName := TableItem.FieldByName('name');
    TableItem.First;
    I := 1;
    ListBox1.BeginUpdate;
    try
      TableItem.DisableControls;
      try
        while not TableItem.Eof do
        begin
          if I mod 250 = 0 then
            Caption := Format('%d of %d', [I, TableItem.RecordCount]);
          ListBox1.Items.Add(Format('id: %d; name: %s', [FieldId.AsInteger, FieldName.AsString]));
          TableItem.Next;
          Inc(I);
        end;
      finally
        TableItem.EnableControls;
      end;
    finally
      ListBox1.EndUpdate;
    end;
  finally
    TableItem.Free;
  end;
end;
Первые 7 000 записей перебираются мгновенно. После перебор резко замедляется и дальше выполняется еле-еле. 100 000 записей перебирает около 30 минут. В чем может быть проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 ответ на этот вопрос

  • 0

Добавление в листбокс ресурсоемкое дело. Попробуй закоментировать строку  

// ListBox1.Items.Add(Format('id: %d; name: %s', [FieldId.AsInteger, FieldName.AsString]));

и проверь скорость работы

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

  • Похожие публикации

    • Автор: Bio HaZaRD
      Всем привет!
      Пишу проект на основе FireDac (TFDConnection, TFDQuery) + SQLite. На ПК с IDE программа запускается, а на других - нет. На ПК, без IDE, стоят все обновы.
      Помогите разобраться, где проблема или посоветуйте другой компонент, который поддерживает SQLite. Заранее спасибо!
       
      Примечания к файлу:
      Windows-Problemberichtserfassung = Windows Problem Reporting

    • Автор: GoldenEalge
      Имеется бд с полем blob , как из нее загрузить картинку в ListView через LiveBindings ?
    • Автор: GoldenEalge
      Всем привет только начинаю работать с sqlite и возникло пару вопросов.Добавляю на форму пару компонентов

      Устанавливаю связь с бд которая лежит в папке 

      при запуске все хорошо 

      но при попытки редактировать , выдает 

      база открыта только в софте , больше не где ,в чем может быть проблема?
       
    • Автор: krapotkin
      Подскажите plz
      У меня был сервер в datasnap 3-звенке, подключенный к Firebird через fibplus
      Для того, чтобы не создавать подключения к БД на каждое обращение к серверу, (а сервер ведь многопоточный) я держал пул открытых коннектов к БД и по запросу выдавал один коннект для исполнения запроса, после чего возвращал коннект в список свободных
      Теперь у fdconnection есть свойство pool
      Значит ли это, что теперь я могу вообще не заморачиваться сам и открывать коннект на каждый запрос, а FireDAC спрячет от меня кэширование коннектов?
    • Автор: Rusland
      Можно ли работать с одной базой одновременно и из программы и из сервиса?
      PS. Android
    • Автор: Adm123
      Собственно, сабж в заголовке. Как? 
      Пытаюсь использовать SQLite + FDConnection. 
      FDConnection.Params.Database:= TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, 'basename.db'); работает в основной форме, но вешает сервис...
    • Автор: uuxyyz
      Коллеги, добрый день. Отписался сегодня по выходу XE8, но решили таки продолжить мытарства. Вопрос, кто нибудь может подсказать, как собрать 64 битное IOS приложение? Сегодня установили XE8, линковщик требует libsqlite3.a и все. 
    • Автор: kvantum
      Здравcтвуйте !
      После записи в таблицу иероглифов, например "日本人", в ней отображаются вопросы "???".
      Какие настройки необходимо произвести с компонентами FireDAC для корректной записи/отображения иероглифов? 
      Пример: Ieroglifs.zip
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу