Возможно, вы работаете по неправильному представлению. MS-Access поддерживает так называемые «гетерогенные соединения» (т. Е. Таблицы из множества back-end могут быть включены в один и тот же запрос, например, комбинируя данные из Oracle и SQLServer и Access и таблицы Excel). Чтобы поддерживать эту функцию, Access применяет параметр предложения WHERE у клиента, за исключением ситуаций, когда есть «сквозной» запрос к интеллектуальному серверу. В SQL Server фильтрация происходит в движке, запущенном на сервере, поэтому SQL Server обычно отправляет клиенту гораздо меньшие наборы данных.
Ответ на ваш вопрос также зависит от того, что вы подразумеваете под «удаленным». Если вы используете Access и SQL Server друг против друга в той же сети, SQL Server, работающий на сервере, будет потреблять лишь небольшую часть полосы пропускания, которую делает Access, если файл MDB доступа находится на файловом сервере. (Разумеется, если MDB находится на локальном ПК, пропускная способность сети не потребляется.) Если вы сравниваете доступ в локальной сети и SQL Server через широкополосную связь через облако, вы сравниваете номинальную скорость 100 мбит/с против DSL или полосу пропускания кабеля, то есть против номинала 20 мбит/с для высокоскоростного кабеля, в лучшем случае, пятая часть полосы пропускания, вероятно, намного меньше.
Таким образом, вы должны быть более конкретными в отношении того, что вы пытаетесь сравнить.
Вы сравниваете клиенты Access на локальном ПК, потребляющие MDB доступа, находящиеся на файловом сервере, против какого-либо другого клиента, потребляющего данные с SQL Server, находящегося на другом сервере в той же сети? Продолжаете ли вы использовать Access как клиент? Будут ли ваши запросы проходить через проход?
Просто напишите свое приложение, чтобы быть эффективным при извлечении данных, то есть никогда не извлекайте больше, чем пользователь, или можете работать одновременно. Это будет эффективно в любой среде, в том числе с задней частью Jet/ACE. В этом нет ничего волшебного. Единственное обстоятельство, в котором вы можете столкнуться с крайними случаями, - это то, что вы планируете работать в открытом Интернете с относительно низкой пропускной способностью там (по сравнению с локальной сетью). В этом случае вы можете сделать больше, но я бы посоветовал не досрочную оптимизацию - сделать ее эффективной, а затем исправить то, что не достаточно быстро. –
@David: Я переношу очень большое существующее приложение MS ACcess. Мне нужно быть стратегическим в том, какие изменения я делаю, нет времени или бюджета для изменения каждого запроса и источника данных. – RedFilter
Я даже не стал предлагать модифицировать все. Если это хорошо спроектированное приложение Access, оно, скорее всего, будет работать очень хорошо. Если это не так, это потребует большой работы. Принцип получения только ограниченного количества записей делает быстрое и эффективное приложение независимо от того, является ли задним концом Jet/ACE или база данных сервера. –