запрос через линк | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Есть база Oracl-а, в ней линк на базу MS SQL. Если делаю запрос:
отрабатывает менее, чем за секунду. Если делаю
отрабатывает, скажем так, довольно долго. Если сделать
высвечивается "14.02.17" Вопрос - где логика? Почему? Как побороть? |
Re: запрос через линк | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
docs.oracle.com
in brevi: Если оракловский сервер не может конвертировать условие запроса в синтаксис целевого сервера (в данном случае в синтаксис MSSQL), то он пошлёт запрос вынимающий ВСЕ данные (опцию WHERE он пропустит), а потом уже локально будет их фильтровать своими силами. Естественно оракловская псевдо-функция sysdate никак не может быть сконвертирована в mssql-ный запрос. Если вычислить эти параметры на стороне оракла (например в подзапросе из dual - по типу как в твоём третьем запросе) и потом использовать join к "внешней" таблице, то есть шанс что оракл пропихнёт на MSSQL уже вычисленное подзапросом скалярное значение как условие для выборки (надо читать про оптимизацию join-ов между "родными" и внешними таблицами). Плюс к тому я бы очень внимательно почитал про работу с timestamp типом через тот transparent gateway который у вас используется (и несколько есть - и "специфические" под конкретные СУБД, и "общие" a-la ODBC). С датой-временем могут быть самые разные "косяки". Вот официальное предупреждение в документации docs.oracle.com ------------------ WBR, Igor |
Re: запрос через линк | |
---|---|
S-type Автор Сообщений: 2969 Дата регистрации: 24.04.2004 |
Вот же сволочь какая - условие WHERE с синтаксиса oracl-а в синтаксис ms sql-я конверсировать не может Спасибо - теперь логика понятна.
Попробовал - если добавить join (select to_char(sysdate-2) from dual) ... увы, всё равно индекс "не замечает". Есть другой вариант. Запрос будет дёргаться из C#-ной программы. Можно попробовать параметризированный запрос - прямо в C# DateTime.Now. В крайнем случае, всегда остаётся вариант "на лету" формирования текста SQL (склеивая в одну строку). Хотя, это уже будет горбыль... Исправлено 1 раз(а). Последнее : S-type, 17.02.17 20:09 |
© 2000-2024 Fox Club  |