Вы пробовали тестировать, что происходит, если вы связываете интерфейс доступа с SQL Server через ODBC и пишете SQL, как если бы обе таблицы были локальными? Затем вы можете выполнить трассировку на сервере, чтобы увидеть, что именно Jet отправляет на сервер. Вы можете быть удивлены тем, насколько эффективен Jet с такими вещами. Если вы ссылаетесь на ключевое поле (например, поле идентификатора, будь то с SQL Server или нет), вполне вероятно, что Jet отправит список идентификаторов. Или вы можете написать свой SQL для этого (используя IN SELECT ... в вашем предложении WHERE).
Как правило, эффективность будет зависеть от того, где будет выполняться ваше предложение WHERE. Например, если вы объединяете локальную таблицу Jet со связанной таблицей SQL Server в одном поле и фильтруете результаты на основе значений в локальной таблице, это, скорее всего, будет чрезвычайно эффективным, поскольку единственное, что будет делать Jet отправить на сервер все, что необходимо для фильтрации таблицы SQL Server.
Опять же, это будет полностью зависеть от того, что именно вы пытаетесь сделать (то есть, по каким полям вы фильтруете). Но дайте Джету шанс увидеть, насколько он умен, в отличие от предположения, что Джет его испортит. Вполне может потребоваться некоторая настройка, чтобы заставить Jet работать эффективно, но если вы можете сохранить всю свою логику на стороне клиента, вам лучше, чем пытаться обойтись, отслеживая все базы данных Access с сервера.