Есть ли способ оптимизировать запрос на UPDATE, который делает TUniTable, путем уменьшения перечня обновляемых полей?
Суть проблемы: при обновлении одного поля из записи в TUniTable в профайлере виден запрос
exec sp_cursor 180150005,33,1,N'[TestTable]',@Field1=1,@Field2=2,@Field3='Test',@Notes=NULL.
т.е. UPDATE выполняется по всем полям. Если таблица имеет большое количество полей, то это не рационально.
На таблице висит триггер на UPDATE, который проверяет изменяемые значения каждого поля. Поскольку в вышеуказанном запросе участвуют все поля, мы имеем лишние проверки валидности значений полей, которые по факту не менялись.
Настройки TUniTable:
Код: Выделить всё
SpecificOptions.Values['SQL Server.FetchAll']:= 'False';
SpecificOptions.Values['SQL Server.CursorType']:= 'ctKeySet';
SpecificOptions.Values['SQL Server.CursorUpdate']:= 'True';
Код: Выделить всё
MultipleActiveResultSets = 'True'
OLEDBProvider = 'prNativeClient'
Все остальные настройки - по умолчанию.
Используется UniDAC 5.2.7, MS SQL 2008 R2.
З.Ы. была замечена ошибка "Bookmark is invalid." после сохранения новой записи. при настройках
Код: Выделить всё
TUniTable: CursorType = ctStatic;
CursorUpdate=True;
FetchAll=False.