Вероятно, Jet передаст все это SQL Server, который выполнит объединение индексов, а затем выполнит обновления. Другими словами, для простого запроса, подобного вашему примеру, все выполняется на сервере, при этом ни один байт не протянул через провод для локальной обработки.
Довольно легко заставить Джет тянуть весь стол. Самый простой способ - поместить выражение Access в предложение WHERE. Вот пример, который может вызвать это:
WHERE Format(MyDate,"YYYY") = 2008
Необходимо извлечь всю таблицу, чтобы Access мог запустить функцию Format () для всех дат в вашей таблице. Кроме того, он не сможет использовать какие-либо индексы и поэтому будет очень медленным. Это было бы слишком медленно для Jet, просто потому, что это неэффективно. Правильный способ написать это предложение WHERE:
WHERE MyDate Between #1/1/2008# And #12/31/2008#
Если вы напишите это в сохраненном запросе Access, он будет передан на SQL Server для обработки (и ODBC отправит соответствующие разделители, если ваш внутренний движок БД использует отличные от тех, которые использует Jet SQL).
Но если вы этого не делаете, вы вряд ли столкнетесь с проблемой перетаскивания слишком большого количества данных по проводам. Jet, на самом деле, достаточно умен и отлично справляется с отправкой как можно большего количества запросов по проводам для обработки. Например, если вы вызываете функции Access в своем операторе SELECT, базовый выбор без функций Access будет отправлен на сервер, а затем функции будут выполнены в Access для набора результатов. Для этого запроса доступа:
SELECT Format(MyDate,"MM-DD")
FROM MyTable
WHERE MyDate Between #1/1/2008# And #12/31/2008#
Jet отправит это на сервер:
SELECT MyDate
FROM MyTable
WHERE MyDate Between #1/1/2008# And #12/31/2008#
Как только Jet получит с сервера только те строки, которые соответствуют критериям, он только затем отформатирует поле даты с помощью функции Access Format (). Это также работает с соединениями, особенно с соединениями в индексированных полях (хотя неиндексированные объединения полей, вероятно, также будут передаваться на сервер).
Теперь, иногда Джет делает неправильные предположения и оказывается невероятно неэффективным. В этих случаях вы можете настроить представления и хранимые процедуры на сервере и использовать сквозные запросы, чтобы избежать неправильных предположений Jet.