powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / рекордсет тормозит..... (+)
16 сообщений из 16, страница 1 из 1
рекордсет тормозит..... (+)
    #32072028
ICBa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблем такой:

Есть аксессовая БД с присоединенными таблицами,

Если сделать формочку с источником данных = этой присоединенной таблице то обновление данных в форме происходит достаточно быстро.

Если же сделать просто формочку берующую данные рекордсетом(с фильтром и сортировкой) из этой таблицы то запрос сильно тормозит: есть подозрение что при каждом явном запросе аксесс сосёт всю присоединенную таблицу.

Собственно вопрос: как сделать чтобы во втором варианте данные обновлялись так же быстро как и в первом?
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32072078
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Чьи присоединены таблицы?
2) Через какой протокол (если не аксесовские) - ODBC или OLE DB
3) Какой рекордсет - DAO или ADO
4) Какая версия аксеса
5) текст запроса
6) Индексы расставлены?
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32072186
Sergey D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А Erika как снайпер бьёт. Вопросы те, что надо! Надо отвечать!
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32072920
ICBa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) Чьи присоединены таблицы?
Аксессовые, в другом файле на сетевом диске...

2) Через какой протокол (если не аксесовские) - ODBC или OLE DB
А фиг знает, в аксессе пишу:

Код: plaintext
1.
2.
Set bd = CurrentDb
bd.OpenRecordset 
Set rRecSet1 = bd.OpenRecordset( "active_commands" , dbOpenDynaset)


3) Какой рекордсет - DAO или ADO
см. выше...

4) Какая версия аксеса
97 SR-2

5) текст запроса
см. выше...

6) Индексы расставлены?
В смысле? Поле ID В таблицах? Нет, во многих таблицах индексы не стоят....
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32072932
ICBa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
Dim rRecSet As Recordset
Dim bd As Database
Set bd = CurrentDb
Set rRecSet1 = bd.OpenRecordset( "некий SQL запрос" , dbOpenDynaset)
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32072965
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Выдержка из хелпа "Повышение быстродействия внешней базы данных SQL":
При подключении к таблице внешней базы данных SQL повысить производительность позволяет использование связанных таблиц вместо прямого их открытия. Прямое открытие таблиц возможно только с помощью программы Visual Basic для приложений. Связывание таблиц является значительно более быстрым, мощным и эффективным средством, чем прямое открытие таблиц.
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32072966
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2) Для начала надо индексы расставить, желательно ключевые и на поля, учавствующие в объединении таблиц, сортировках и в условиях фильтров . См. хелп "Создание индекса для ускорения поиска и сортировки записей". Индексирование несколько замедляет ввод данных, но значительно ускоряет выполнение запросов. Поэтому выбор правильных индексов - это почти искусство.
Можно попробовать запустить имеющийся в аксес "Анализатор быстродействия" - может, чего дельное подскажет.
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32072971
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3) Лично я предпочитаю часто используемые запросы хранить в виде запросов и открывать по имени, привязывая к свойству "Источник записей" формы

Me.RecordSource = "Имя запроса"

4) В справке есть разделы, которые нужно прочитать: "Создание индекса для ускорения поиска и сортировки записей"; "Оптимизация запросов"; "Повышение быстродействия"

5) "некий SQL запрос" не является текстом запроса, также как и инструкция bd.OpenRecordset("некий SQL запрос", dbOpenDynaset). Текст запроса - это то, что в кавычках. Его то и надо приводить, чтобы кто-нибудь что-нибудь дельное посоветовал.

З.Ы. Прошу прощения за отправку кусками - у нас сервер глючит - большего размера посты не принимает
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32073246
ICBa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. индексы нет смысла использовать, данные в таблице меняются раз в секунду
2. связанные таблицы, при открытии их из VB сосутся целиком. :(
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32073280
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это что же за таблица такая, в которой данные меняются раз в секунду? и каков ее размер? Просто интересно. и что за эту секунду можно успеть сделать с этими данными.... думается мне Вы что-то путаете....
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32073282
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и вообще Вас просили запрос показать, а без него Вам врядли кто-то сможет помочь... все советы будут на уровне теории.....
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32073309
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>связанные таблицы, при открытии их из VB сосутся целиком. :(

Вообще-то, если я ничего не путаю, аксес не является серверной СУБД. Поэтому в любом случае данные сначала выкачиваются на клиента, а потом уже обрабатываются. Если нужна обработка запросов на сервере - переходите на SQL server.
Ну а в аксесе повышают быстродействие через продуманность запросов, индексов итд(см выше)

Изменение данных раз в секунду - это мне тоже оччень интересно - можно подробнее.
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32074517
ICBa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные(фисловые) меняются раз в секунду другой программой.
а клиенты сосут эти данные аксессом...
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32074526
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"сосут" тоже раз в секунду? это котировки что ли?
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32074567
ICBa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Типа того...

В данном случае, когда данные меняются раз в секунду отображать их можно двумя способами:
1. Через ленточную форму которая завязана на обновляющуюся таблицу -тогда данные в форма обновляются автоматически как только обновились данные в таблице. Но стандартная форма неудобна для отображения данныых.

2. Сделать свою форму например с ActiveX контролом который красиво и удобно отображает данные но при этом приходится раз в секунду по таймеру рекверить рекордсет, что сильно замедляет работу. Если с одним-двумя пользователями всё нормально то после десятка пользователей 10 мегабитная сетка уже не справляется с загрузкой и всё силоьно тормозит. :(


Вопрос: как Аксесс обновляет данные в форме (см. п. 1) и при это не сосет каждый раз всю таблицу? Как это самому реализовать на VBA?
...
Рейтинг: 0 / 0
рекордсет тормозит..... (+)
    #32074607
alk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
alk
Гость
Вопрос: как Аксесс обновляет данные в форме (см. п. 1) и при это не сосет каждый раз всю таблицу? Как это самому реализовать на VBA?
re : он не отслеживает реальные изменения . он отслеживает чтобы при сохранении обновлялись значения, полученные изначально формой(не были за время просмотра изменены другим пользователем)

если тебе нужно отслеживать изменения в реальном времени -
1. введи поле в таблице или в служебной таблице в котором будет храниться дата/время последнего обновления.
2. быстрым статическим запросом / командой вынимай максимальное значение даты/времени и если оно изменено по сравнению с последним значением в форме то только тогда запускай процедуру синхронизации обновляемого запроса, являющегося источником данных формы.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / рекордсет тормозит..... (+)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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