Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Master / Detail в Delphi 6 + ADO + MSSQL 2000 / 1 сообщений из 1, страница 1 из 1
07.07.2003, 13:56
    #32200893
Gavr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Master / Detail в Delphi 6 + ADO + MSSQL 2000
Я использую Delphi 6 + ADO + MSSQL 2000.
Данные редактируются не через элементы управления данными, а преимущественно через кнопки и т.д.
FillFactor на индексах 0%. Везде числовой PrimeryKey и он Clustered.

Программы - клиенты становятся недоступными для запуска после "прокачки на" SQL больших объемов данных.

Я после "прокачек разгоняю базу". Для этого делаю sp_UpdateStats,
Затем запускаю клиента с фильтром, после применения которого возвращается минимальный набор данных и через Enterprise manager в ручную
рекомпилирую "тормозящие" Views, затем Stored procedures. После всех этих манипуляций проделываю тоже самое на более больших объемах данных, кроме sp_UpdateStats, и все начинает работать.
Как можно этого избежать?

Подскажите пожалуйста, какие, с точки зрения производительности, методы лучше использовать для отображения Master/Detail?
1)Действительно ли лучше использовать TADODataSet вместо TADOStoredProc?
2)Требуется ли применять Enable/Disable controls для повышения производительности?
3)Самый лучший метод для обновления набора записей в ADO Requery?
4)Как лучше выставить настройки подключения:
-ConnectOptions;
-CursorLocation;
-IsolationLevel;
-Attributes;


Я пробовал использовать:
1)TADOStoredProc, где Master-Source возвращает поля Fld1, Fld2,..., FldN, a Detail-Source использует параметры @Fld1, @Fld2. Detail-Source.Datasource = MasterSource.
2)TADODataSet, где прописывал хранимую процедуру уже с параметрами в CommandText (с_пр_МояХрПроц 123, 43, 234) и следующий код:

If DataSourceApplic.DataSet.Active Then Begin

If DataSourceApplicGrp.DataSet Is TADODataSet Then
Begin
S1 := Format('с_пр_ЗаявкиВыстГрупп %d, %d, %d, %d, %d, %d',
[
DataSourceApplic.DataSet.FieldByName('FK_Договоры').AsInteger,
0,
DataSourceApplic.DataSet.FieldByName('FK_Заявки').AsInteger,
DataSourceApplic.DataSet.FieldByName('FK_Приложения').AsInteger,
DataSourceApplic.DataSet.FieldByName('ПГруж').AsInteger,
DataSourceApplic.DataSet.FieldByName('FK_Группы').AsInteger
]);

If TADODataSet(DataSourceApplicGrp.DataSet).CommandText<>S1 Then Begin
DataSourceApplicGrp.DataSet.DisableControls;
DataSourceApplicGrp.DataSet.Close;
TADODataSet(DataSourceApplicGrp.DataSet).CommandText := S1;
DataSourceApplicGrp.DataSet.Open;
DataSourceApplicGrp.DataSet.EnableControls;
End;
End ...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Master / Detail в Delphi 6 + ADO + MSSQL 2000 / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]