Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / К знатокам... / 4 сообщений из 4, страница 1 из 1
18.04.2001, 10:15
    #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
18.04.2001, 11:35
    #32004470
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
К знатокам...
Ваша задача, как раз тот самый случай, когда нужно воспользоваться возможностью предварительного анализа плана выполнения запроса.
...
Рейтинг: 0 / 0
18.04.2001, 12:46
    #32004474
petr13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
К знатокам...
Если анализ производительности не поможет, то можно поступить еще следующим образом.
Так как речь идет о разовом переносе данных, то ее можно разбить на две задачи
1) Выборка необходимых данных и формирование SQL скрипта. Так, как эта задача выполняется
в рамках 1-го сервера она будет сделанна достаточно быстро. Делается это с помощью selecta
вида select 'insert into new table(c1,c2,..) values(','''',t1.cx,''',',....from t1,t2...
результат запроса сохраняешь в файле
2) Выполнение скрипта по заполнению таблицы

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


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