Я хочу прочитать все содержимое таблицы в память как можно быстрее. Я использую базу данных Nexus, но я мог бы использовать некоторые методы, применимые ко всем типам баз данных в Delphi.
Таблица, на которую я смотрю, содержит 60 000 записей с 20 столбцами. Так что не большой набор данных.
Из моего профилирования я нашел следующее:
Доступ к таблицам напрямую с помощью TnxTable не быстрее и не медленнее, чем при использовании SQL-запроса и «SELECT * FROM TableName»
Простой цикл по строкам без фактического чтения или копирования данных занимает большую часть времени.
Производительность, которую я получаю -
- Перебор всех записей занимает 3,5 секунды
- Перебор всех записей, считывание значений и их сохранение занимает 3,7 секунды (т. Е. Всего 0,2 секунды)
Образец моего кода
var query:TnxQuery;
begin
query.SQL.Text:='SELECT * FROM TableName';
query.Active:=True;
while not query.Eof do
query.Next;
Это займет 3,5 секунды для таблицы строк с 60000.
Это представление звучит разумно? Существуют ли другие подходы, которые позволили бы мне читать данные быстрее?
В настоящее время я читаю данные с сервера на том же компьютере, но в конечном итоге это может быть другой сервер в локальной сети.