Как лучше уменьшить объем передаваемых данных?
|
|
Воскресенье, 26 Ноября 2017 г. 19:14
+ в цитатник
Есть разделенная форма. Пользователи сами накладывают фильтры, какие им нужно, пользуясь стандартными средствами Access (т.е. кнопкой «маленький треугольник» на заголовках колонок). Каждый пользователь запускает несколько копий приложения. Данные для формы тянутся с SQL-сервер, где сделано View. Все работало достаточно шустро. Но вырос объем данных (несколько десятков тысяч), пользователей (несколько десятков) и начала подглючивать сеть. В результате периодически на сервере появляется большое количество сессий в состоянии SUSPENDED. Как говорят администраторы сервера, причина в том, не удается передать данные в клиентскую часть. Выход я вижу в том, чтобы уменьшить количество передаваемых в Access данных, т.е. выполнение наиболее популярных «фильтров» перенести на сервер. Мне пришло в голову три варианта:
1. Хранимая процедура, которая вызывается с помощью «запроса к серверу» в который подставляются параметры фильтра.
2. Просто «запрос к серверу», в который целиком засовывается View, с необходимыми фильтрами. Или, как вариант, вызывается имеющаяся View с добавлением необходимых фильтров.
3. Условия фильтров заносятся в отдельную таблицу, которая связывается с View, а выборка производится по имени компьютера или пользователя.
Все три способа имеют свои минусы. В первых двух происходит резкое замедление при нажатти на «маленький треугольник» на заголовках колонок, видимо, при использовании «запросов к серверу» Access-у приходится «выкачивать» все данные, чтобы сформировать меню (например, по дате). В третьем случае по имени пользователя или имени компьютера я не смогу определить какая из копий приложения запущенных на одном и том же компьютере под одним и тем же пользователем сформировала фильтр.
Если кто-нибудь подскажет, как можно решить эту проблему – буду премного благодарен.
Access 2010 - ACCDB, SQL 2012
http://www.sql.ru/forum/1278288/kak-luchshe-umenshit-obem-peredavaemyh-dannyh
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-