Я подключаюсь к Jet 4 DB через ODBC. Jet DB использует сквозные запросы к Oracle DB. Это работает до сих пор (не может напрямую обращаться к запросам p-t, но создание представления по запросу делает трюк).База данных Jet и сквозные запросы, параметры
Мне нужно некоторое подмножество данных, возвращаемых p-ts. Параметры были бы лучшими, но не поддерживались.
Два вопроса:
1) Jet, похоже, в состоянии выдвинуть некоторые Where-положения в Oracle. Например, у меня есть транзитный запрос, который возвращает 100 тыс. Строк. Взгляд на p-t с одной фразой (например, «район = 1010») очень быстрый, поэтому обработка, похоже, происходит на Oracle. Добавление дополнительных предложений может замедлить запрос до обхода, зацикливаясь в течение нескольких минут с высокой загрузкой процессора. Есть ли какая-либо документация о том, что передается и что делается на стороне Jet?
2) Существует множество учебников по созданию динамических сквозных запросов с помощью VBA/Access. Возможно ли это сделать (или что-нибудь в этом роде) с помощью Jet, доступного через ODBC?
Благодаря Martin
Edit: Извините за то, что неясно.
У меня есть средство отчетности, которое обращается к Jet db через ODBC. Jet db содержит некоторые данные и несколько сквозных запросов к Oracle db. Типичным примером использования будет отчет о создании для данного отдела и заданная дата с использованием данных из Jet и Oracle. Это очень хорошо работает в принципе.
Проблема заключается в том, что сквозные запросы не могут содержать никаких параметров. Простой запрос работает как представление, поэтому я могу просто выполнить «select» из pt_query, где dep = 'a' и date = somedate. Однако Jet загружает все строки из pt и выполняет полное сканирование на стороне клиента. Это неприемлемо медленно для представления в 100 тыс. Строк, и мне нужно найти способ избежать этого.
Для некоторые простые выбирает, Jet, похоже, пусть Oracle делать тяжелую работу и не загружает все строки, поэтому мой вопрос 1.
Если это не работает, мне нужно найти способ чтобы заставить Jet загружать только данные, которые мне нужны из Oracle для данного запроса.
Я знаю, что могу модифицировать pts через Access VBA, но я только подключаюсь через ODBC, поэтому я могу передавать только SQL в Jet, а не вызывать vb api (если только он не может встроить VB в SQL-запрос).
Почему Jet необходимо, если вы запрашиваете Oracle? Почему бы не использовать ODBC и ADO http://www.connectionstrings.com/oracle? – Fionnuala
Как всегда, бизнес-политика ... Я не могу создавать таблицы или загружать данные арбитража в хранилище данных Oracle. Я присоединяюсь к некоторым пользовательским данным, которые в настоящее время хранятся в Access/Jet с данными из Oracle db. – Martin
Что переносит Jet в базу данных сервера, будет зависеть от используемой базы данных сервера и насколько хорошо написан драйвер ODBC. Jet запросит столько метаданных, сколько возможно, для оптимизации запроса и отправки как можно большего количества ресурсов серверу для обработки. Я бы посмотрел на вашу SQL-трассировку, чтобы узнать, что вызывает замедление с большим количеством критериев. Отмечу, что когда я смотрю на трассировки в SQL Server, простые запросы от Jet с критериями выполняются с помощью общего параметризованного sproc. Я бы ожидал чего-то подобного в Oracle. –