Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
К знатокам...
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, уважаемые знатоки! Вопрос у меня серьезный, требующий опыта для ответа. Требуется перенести данные из 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. Как еще можно увеличить скорость выполнения подобных запросов? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2001, 10:15 |
|
||
|
К знатокам...
|
|||
|---|---|---|---|
|
#18+
Ваша задача, как раз тот самый случай, когда нужно воспользоваться возможностью предварительного анализа плана выполнения запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2001, 11:35 |
|
||
|
К знатокам...
|
|||
|---|---|---|---|
|
#18+
Если анализ производительности не поможет, то можно поступить еще следующим образом. Так как речь идет о разовом переносе данных, то ее можно разбить на две задачи 1) Выборка необходимых данных и формирование SQL скрипта. Так, как эта задача выполняется в рамках 1-го сервера она будет сделанна достаточно быстро. Делается это с помощью selecta вида select 'insert into new table(c1,c2,..) values(','''',t1.cx,''',',....from t1,t2... результат запроса сохраняешь в файле 2) Выполнение скрипта по заполнению таблицы Попутно появляется еще одно преимущество. 1-ю операцию можно сделать один раз, а вторую сколько надо, и даже по частям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2001, 12:46 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3581&tid=1826971]: |
0ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 355ms |

| 0 / 0 |
