2015-11-13 5 views
1

У меня есть приложение, когда одним нажатием кнопки все записи из таблицы базы данных загружаются в cxGrid (через tadquery/datasource). Количество записей будет увеличиваться по мере того, как пользователи вставляют их.Загрузить набор данных/запрос быстрее

Мне просто интересно, есть ли что-нибудь, что мне нужно сделать или что нужно сделать, чтобы не занять слишком много времени, чтобы загрузить все записи.

Это то, что я делаю, когда кнопка нажата:

with query1 do 
begin 
    Close; 
    SQL.Clear; 
    SQL.Text := 'SELECT * FROM DBA.Table1; 
    Open; 
end; 

Предложения будут оценены.

+0

cxGrids оптимизированы для скорости, поэтому, возможно, предложения были бы преждевременными. Вы протестировали свое приложение с помощью нескольких записей k в таблице 1? – MartynA

+0

На данный момент около 3000 записей и примерно занимает около 4-5 секунд для загрузки –

+1

Это с локальным сервером Sql или с новым сервером? Мое тестовое приложение загружает и отображает 7 тыс. Записей с 22 столбцами в 900 мс, не делая ничего особенного для повышения производительности. – MartynA

ответ

1

Это не особенно строгий тест, очевидно, но с моей тестовой приложение ниже, установка GridMode к True результатов в наборе данных открывается и сеткой населенной примерно 125 мс (для 7К строк 22 столбцов) по сравнению с 900ms с ним установлен на False.

procedure TForm1.Button1Click(Sender: TObject); 
var 
    T1 : Integer; 
begin 
    if qNames.Active then 
    qNames.Close; 
    T1 := GetTickCount; 
    cxGrid1DBTableView1.DataController.DataModeController.GridMode := CheckBox1.Checked; 
    qNames.Open; 
    Caption := IntToStr(qNames.RecordCount) + ':' + IntToStr(GetTickCount - T1) + ':' + IntToStr(qNames.FieldCount); 
end; 

Это все, в cxGrid установлен по умолчанию, за исключением, что я установить KeyFieldNames на DataController к ПК набора данных.