Добрый вечер!
Решил поделиться небольшим опытом .
Тоже работаю по локаль. сети(5 пользователей) . База тяжелая (35-40 таблиц). Сам к серверу на удаленке( ping до сервера 17 мс).
База была 23 мб . Вынес фотки - теперь 1,65 мб . Проблем пока нет (фу,фу,фу).Предполагал , что упрусь в скорость , поэтому оптимизировал скрипты с запросами SQL . Первое : выяснил , что прямой SELECT в переменную работает гораздо быстрее чем внутри INSERT или
UPDATE .
Т. е. вот такое работает гораздо быстрее :
begin
id_Mater := SQLExecute('SELECT id_Materials FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) ); // читаем идентификатор родительской таблицы
Nom := SQLExecute('SELECT NomNak FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
NakDat := SQLExecute('SELECT DataNak FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
Otkud := SQLExecute('SELECT Kuda FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
Kud := SQLExecute('SELECT Otkuda FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
Vozvr := StrToFloat(SQLExecute('SELECT Vozvrat FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID)));
VozNet := SQLExecute('SELECT OtchZaPriz FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
ZaN := SQLExecute('SELECT NomerZayav FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
ZaDat := SQLExecute('SELECT DataZayav FROM MatZayav2 WHERE id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID) );
SQLExecute('INSERT INTO Nakladnie (Nomer,NakData,Otkuda,Kuda,Vozvrat,VozvrNet,id_Materials,ZayavNom,ZayavData) VALUES ("'+Nom+'","'+NakDat+'","'+Otkud+'","'+Kud+'",'+ReplaceStr( FloatToStr(Vozvr),',','.')+',"'+VozNet+'",'+IntToStr(id_Mater)+',"'+ZaN+'","'+ZaDat+'")');
end;
чем например такое :
SQLExecute('INSERT INTO AktBrakMat (NomAkt, DataAkt, KolMat, id_Materials, NomNak, DataNak, KolichVnakl) SELECT MatZayav2.NomNast,MatZayav2.ZakroyDataFakt,MatZayav2.BrakPolot,MatZayav2.id_Materials,MatZayav2.NomNak,MatZayav2.DataNak,MatZayav2.MaterKolFakt FROM MatZayav2 WHERE MatZayav2.id = ' + IntToStr(frmZakroyniyCeh.TableGrid3.dbItemID));
да и вероятность нарваться на locked уменьшается .
Если я не очень понятно , то пишите , раскрою измерения подробней.
Да , еще . Если у вас проходит много удалений из базы , не ленитесь делать базе (периодически) сжатие .