powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / К знатокам...
4 сообщений из 4, страница 1 из 1
К знатокам...
    #32004464
Фотография Axel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток, уважаемые знатоки!
Вопрос у меня серьезный, требующий опыта для ответа. Требуется перенести данные из MS SQL 6.5 в другую программу с преобразованием структуры некоторых таблиц. Для этого написаны процедуры, в которых в новые таблицы вставляются записи из объединения нескольких больших (по кол-ву записей) таблиц. Что-то вроде
insert table_new select ... from large_table_1 left join large_table_2 on ... left join large_table_3 on ... inner join large_table_4 on ... inner join large_table_5 on ...
Все это работает крайне медленно, просто нереально перенести данные в требуемые сроки по времени выполнения запросов. Теперь, собственно, вопросы:
1. Строится ли при этом сначала cross join, а затем учитываются on ... или все более интеллектуально?
2. Если работать через времянки, линкуя максимум по 2 таблицы, будет ли рост производительности?
3. Будет ли ускорение, если использовать вложенные селекты insert table_new select (select value1 from large_table_1),(select value2 from large_table_2), ...?
4. Следует ли заставлять оптимизатор использовать определенные индексы select value from large_table (index=...) или это только затормозит процесс?
5. Как еще можно увеличить скорость выполнения подобных запросов?
Заранее спасибо.
...
Рейтинг: 0 / 0
К знатокам...
    #32004470
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваша задача, как раз тот самый случай, когда нужно воспользоваться возможностью предварительного анализа плана выполнения запроса.
...
Рейтинг: 0 / 0
К знатокам...
    #32004474
petr13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если анализ производительности не поможет, то можно поступить еще следующим образом.
Так как речь идет о разовом переносе данных, то ее можно разбить на две задачи
1) Выборка необходимых данных и формирование SQL скрипта. Так, как эта задача выполняется
в рамках 1-го сервера она будет сделанна достаточно быстро. Делается это с помощью selecta
вида select 'insert into new table(c1,c2,..) values(','''',t1.cx,''',',....from t1,t2...
результат запроса сохраняешь в файле
2) Выполнение скрипта по заполнению таблицы

Попутно появляется еще одно преимущество. 1-ю операцию можно сделать один раз, а вторую
сколько надо, и даже по частям.
...
Рейтинг: 0 / 0
К знатокам...
    #32004490
VadimB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы создал времменую БД на новом сервере и перенес в нее все данные без изменений, как есть.
После переноса, на новой базе сделал все объединения...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / К знатокам...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]