Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по производительности запроса. / 18 сообщений из 18, страница 1 из 1
08.04.2016, 10:59
    #39210834
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
Наверно запрос глупый, но завис...
Есть запрос, являющийся источников данных для формы, вида:
Код: sql
1.
2.
3.
SELECT F_Gr_A_Form_EX.*
FROM F_Gr_A_Form_EX
WHERE (((F_Gr_A_Form_EX.ID_Ob)=IIf(([forms]![Urovni_Gr_EX]![Spr_Object]=0),[ID_Ob],[forms]![Urovni_Gr_EX]![Spr_Object])));


Что бы мне с ним сделать, что бы увеличить производительность. В данном виде тормозит ощутимо.
...
Рейтинг: 0 / 0
08.04.2016, 11:06
    #39210844
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
Проиндексировать в таблице F_Gr_A_Form_EX поле ID_Ob.
...
Рейтинг: 0 / 0
08.04.2016, 11:09
    #39210849
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
Там уже все проиндексировано.

Тут скорее вопрос в том, что будет работать быстрее IIf(([forms]![Urovni_Gr_EX]![Spr_Object]=0),[ID_Ob],[forms]![Urovni_Gr_EX]![Spr_Object])) - такого вида.
...
Рейтинг: 0 / 0
08.04.2016, 11:16
    #39210861
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
Измените источник данных формы, уйдите от обращения к контролам формы. А на событие изменения поля фильтра повесьте процедуру корректировки источника данных.
...
Рейтинг: 0 / 0
08.04.2016, 11:20
    #39210869
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
Сначала исключите многократный анализ поля формы.
Код: vbnet
1.
2.
StrSQL = "SELECT * FROM F_Gr_A_Form_EX WHERE ID_Ob=" & _
         IIf(Forms!Urovni_Gr_EX.Spr_Object=0,"ID_Ob",Forms!Urovni_Gr_EX.Spr_Object)
...
Рейтинг: 0 / 0
08.04.2016, 11:21
    #39210871
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
А будет ли новый источник данных работать существенно быстрее чем запрос?
С учетом что фильтров в форме достаточно. Пока они работают в таблице все ОК, но стоит их вывести IIf в запрос и тормозят...
...
Рейтинг: 0 / 0
08.04.2016, 11:28
    #39210884
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
__Michelle,
Спасибо.
Но улучшения незначительные...
...
Рейтинг: 0 / 0
08.04.2016, 11:39
    #39210897
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
RIO08,

Условие, получающееся при нулевом значении поля формы, WHERE ID_Ob= ID_Ob,
тоже бессмысленное,
лучше уж просто WHERE True или совсем без WHERE.
...
Рейтинг: 0 / 0
08.04.2016, 11:41
    #39210900
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
Предположу, что тормозит выборка из запрос F_Gr_A_Form_EX. Если перед выполнением запроса на выборку загнать F_Gr_A_Form_EX во вспомогательную таблицу, то выполнение может ускориться. Типа такого
Код: vbnet
1.
2.
Currentdb.Execute "insert into TempTable select * from F_Gr_A_Form_EX"
DoCmd.OpenQuery "ЗапросНаВыборкуИзТаблицыTempTable" 'Или рекордсет, или в источник формы. Что требуется
...
Рейтинг: 0 / 0
08.04.2016, 11:44
    #39210905
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
__MichelleRIO08,

Условие, получающееся при нулевом значении поля формы, WHERE ID_Ob= ID_Ob,
тоже бессмысленное,
лучше уж просто WHERE True или совсем без WHERE.
А можно пример как это сделать?
...
Рейтинг: 0 / 0
08.04.2016, 11:49
    #39210909
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
mds_worldПредположу, что тормозит выборка из запрос F_Gr_A_Form_EX. Если перед выполнением запроса на выборку загнать F_Gr_A_Form_EX во вспомогательную таблицу, то выполнение может ускориться. Типа такого
Код: vbnet
1.
2.
Currentdb.Execute "insert into TempTable select * from F_Gr_A_Form_EX"
DoCmd.OpenQuery "ЗапросНаВыборкуИзТаблицыTempTable" 'Или рекордсет, или в источник формы. Что требуется


Оно возможно и так, но ручная фильтрация таблицы F_Gr_A_Form_EX, через стандартные фильтры Access не тормозит. А вот через IIf...
...
Рейтинг: 0 / 0
08.04.2016, 11:53
    #39210916
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
Ну, например
Код: vbnet
1.
2.
StrSQL = "SELECT * FROM F_Gr_A_Form_EX" & _ 
         IIf(Forms!Urovni_Gr_EX.Spr_Object=0,""," WHERE ID_Ob=" &  Forms!Urovni_Gr_EX.Spr_Object)   
...
Рейтинг: 0 / 0
08.04.2016, 12:36
    #39210964
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
__Michelle,

Попробовал. Тоже немного улучшилось, но не критично по сравнению с фильтрацией в форме стандартными фильтрами.
Еще беда, что могу пользоваться только сохраненными запросами.

Спасибо.
...
Рейтинг: 0 / 0
08.04.2016, 12:41
    #39210970
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
RIO08,

Почему беда?
...
Рейтинг: 0 / 0
08.04.2016, 13:27
    #39211034
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
__MichelleRIO08,

Почему беда?
mds_world правильно заметил, что проблема с производительностью таблицы, которая является вьювером и тормозит из за дурной сети. А при работе через RecordSource = " в этих условиях теряется работа через фильтры. Вот така фигня :(

Идея с темповой таблицей она неплоха и возможно я ее реализую, хотя постоянно ее обновлять тож трудоемко.

Так, что пока только ручками оптимизировал запросы и это все что можно сделать.
...
Рейтинг: 0 / 0
08.04.2016, 13:37
    #39211040
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
RIO08__MichelleRIO08,

Почему беда?
mds_world правильно заметил, что проблема с производительностью таблицы, которая является вьювером и тормозит из за дурной сети. А при работе через RecordSource = " в этих условиях теряется [ работа через фильтры. Вот така фигня :(

Идея с темповой таблицей она неплоха и возможно я ее реализую, хотя постоянно ее обновлять тож трудоемко.

Так, что пока только ручками оптимизировал запросы и это все что можно сделать.А если не RecordSource менять, а фильтр накладывать?
Хотя может ничего и не дать в смысле ускорения.
Но попробовать.
...
Рейтинг: 0 / 0
08.04.2016, 13:40
    #39211042
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
__Michelle,

Слишком своеобразные фильтры на форму накладывают пользователи. Сейчас они привыкли к определенной последовательности действий и мне проще заставить сетевиков исправить сеть (стук стук головой об бетонную стенку), чем изменить сложившиеся привычки.
...
Рейтинг: 0 / 0
08.04.2016, 13:41
    #39211043
RIO08
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по производительности запроса.
И да... С фильтрами быстрее, это я проверил...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос по производительности запроса. / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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