Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Propindos Member Откуда: Сообщений: 7 |
Приветствую, коллеги. Есть такая проблема открывают в курсором запрос через openquery с удалённого сервера: declare c cursor local fast_forward forward_only read_only for select * from openquery([QWERTY], 'select и т.д.') open c Очень долго думает. Можно как-нибудь его заставить быстрее открывать курсор? Спасибо. |
7 дек 15, 09:49 [18522221] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
7 дек 15, 09:50 [18522237] Ответить | Цитировать Сообщить модератору |
Propindos Member Откуда: Сообщений: 7 |
alexeyvg, Запрос возвращает много записей (миллионы). Если написать так: declare c cursor local fast_forward forward_only read_only for select top 100 * from openquery([QWERTY], 'select и т.д.') open c Отработает быстро. Не понятно что происходит, если ему top указать. |
7 дек 15, 09:55 [18522269] Ответить | Цитировать Сообщить модератору |
Propindos Member Откуда: Сообщений: 7 |
* "top не указать" кончено. |
7 дек 15, 09:56 [18522284] Ответить | Цитировать Сообщить модератору |
Propindos Member Откуда: Сообщений: 7 |
Кажется я понял - он пишет в tempdb. Фактически неявно формирует временную таблицу. |
7 дек 15, 09:58 [18522305] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
Наверное, читает все данные, поэтому и медленно. |
||
7 дек 15, 10:12 [18522417] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
|
||
7 дек 15, 10:14 [18522430] Ответить | Цитировать Сообщить модератору |
Propindos Member Откуда: Сообщений: 7 |
alexeyvg, Получается залочить в этой ситуации он не может. Жаль, там просто большой объем данных, и все это переливание из удаленной базы во временную, потом опять ее вычитывать, обрабатывать и записывать уже в целевую съедает очень много времени на ввод/вывод. |
7 дек 15, 10:29 [18522512] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Propindos, как курсор ускорит импорт данных? |
7 дек 15, 11:26 [18522913] Ответить | Цитировать Сообщить модератору |
nizamovich Member Откуда: Москва Сообщений: 116 |
Propindos, источник данных один ? |
7 дек 15, 11:33 [18522979] Ответить | Цитировать Сообщить модератору |
Propindos Member Откуда: Сообщений: 7 |
Владислав Колосов, В общем никак, только мне их потом все равно обрабатывать. Там много баз, одинаковой структуры (1с). Тестировал на ограниченном объеме, оказалось, что с курсором не так уж медленно. Видимо все таки придется буферизировать сначала (хотелось сразу с источника брать и обрабатывать). Потом уже буду мерять что быстрее. |
7 дек 15, 11:59 [18523254] Ответить | Цитировать Сообщить модератору |
Шыфл Member Откуда: Прага Сообщений: 776 |
Propindos, а если вытянуть только ID? А сами данные дёргать по одной записи? |
8 дек 15, 15:54 [18530624] Ответить | Цитировать Сообщить модератору |
Propindos Member Откуда: Сообщений: 7 |
Шыфл, Боюсь будет все ещё медленнее. В общем получилось слить в буферную таблицу я почти 7 млн. слегка "потриманных" записей всего за 5.5 минут. а дальше буду уже крутить у себя. |
9 дек 15, 15:33 [18535982] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |