Ускорить выполнение запроса

Oleg-57
Дата: 15.12.2015 16:55:51
Делаю группировочный запрос к таблицам в базе по сети. Выполняется 5 секунд.
Если таблицы в локале, то 1 сек.
Чтобы ускорить запрос по сети, нодо выполнить его в базе с таблицами, а результат показать в прилинкованной базе.
Это запрос к серверу. Не могу правильно написать синтаксин коннекта по ODBC.
Подскажите плиз.
Akina
Дата: 15.12.2015 18:00:06
Oleg-57
нодо выполнить его в базе с таблицами, а результат показать в прилинкованной базе

Для этого нужен SQL-сервер. А там у тебя всего лишь файлопомойка. Увы...
Oleg-57
Дата: 17.12.2015 15:03:52
Неужели нельзя соединиться по odbc c .mdb?
Шыфл
Дата: 17.12.2015 15:07:15
Oleg-57,

Это не ускорит процесс, отнюдь. Ну, если что, смотрите http://www.connectionstrings.com/access/
Akina
Дата: 17.12.2015 15:14:54
Oleg-57
Неужели нельзя соединиться по odbc c .mdb?

Можно. Но содержимое файла будет скопировано в оперативку клиентской станции, и уже только там обработано ODBC-драйвером.
Oleg-57
Дата: 17.12.2015 19:11:37
Шыфл
Oleg-57,

Это не ускорит процесс, отнюдь. Ну, если что, смотрите http://www.connectionstrings.com/access/


А если базу сунуть в SQL сервер и сделать запрос к серверу, ускорит? На сколько примерно процентов?
Шыфл
Дата: 17.12.2015 19:38:26
Oleg-57,

смотря что за запрос, сколько данных. Вообще, Jet имеет скверную привычку загружать все данные себе на в локальный кэш, а потом на месте их обрабатывать. Если весь запрос будет делать 1 сервер, ему это делать, соответственно, не нужно, он передаст только результат.
Akina
Дата: 17.12.2015 21:32:15
Oleg-57
А если базу сунуть в SQL сервер и сделать запрос к серверу, ускорит?

Если запросы будут выполняться на сервере - да.

Oleg-57
На сколько примерно процентов?

В зависимости от условий - возможно, на полпроцента, а, возможно, и на пару порядков.
AndrF
Дата: 22.12.2015 11:02:03
Шыфл
Oleg-57,
Вообще, Jet имеет скверную привычку загружать все данные себе на в локальный кэш, а потом на месте их обрабатывать. Если весь запрос будет делать 1 сервер, ему это делать, соответственно, не нужно, он передаст только результат.


Если ADODB, то весь запрос выполняется на SQL-сервере.

Если работа через DAO и присоединенные таблицы, то все гораздо печальней - как раз проверял на днях. Часть запроса может отдаться серверу и выполниться на нем, а часть выполниться самим Access-ом (речь об выполнении с использованием метода Excecute). При этом в результате могут быть получены неверные значения (ошибки не происходит!). При этом этот же запрос выполненный целиком на сервере или с использованием присоединенных таблиц к MDB-шке выдает верный результат.