2015-08-12 4 views
-2

Я работаю над базой данных MSSQL, в моем сценарии выполняется большое количество запросов на вставку, за 60 секунд почти 2000 записей вставляются через скрипт triger.ms sql переменные окружения сервера

В каждом запросе на вставку мне нужно получить некоторые данные из другой таблицы того же БД (по запросу запроса) и сделать возвращаемое значение частью запроса вставки и, наконец, запустить запрос вставки.

declare @field2 varchar(50); 
set @field = select table2.field2 from table2 where productID='1'; 
insert into product('id','value','field2') values ('1','200',@field) 

Мне нужно, чтобы выбрать все записи fields2 из table2 и сохранить его в массиве в качестве индекса (ProductID) и значения соответствующего значения только один раз. а затем сделать этот массив доступным как переменную окружения или что-то еще (доступное во всей студии управления).

Таким образом, я сохраню время обработки, чтобы выбрать поле2 каждый раз при запуске скрипта вставки. Гид для достижения этой цели будет высоко оценен.

+1

Если ваша цель заключается в «сэкономить время обработки», вы должны задать вопрос о том, чтобы ваш запрос быстрее, а не о переменных окружения. Если это не ваша цель, действительно непонятно, о чем вы действительно спрашиваете. – dpw

+0

Моя цель - сократить время обработки, потому что этот скрипт работает непрерывно, и каждый раз скрипт будет выбирать значение поля2 из таблицы 2 в отношении некоторого id (where clause). Я хочу, чтобы только один раз я выбирал всю запись из таблицы2 и сохранял их в массиве, тогда я использую только этот индекс ключа массива для получения релевантных данных. Я получаю значение только через вызов ключевого индекса массива. таким образом, при каждой операции вставки я буду экономить время обработки, чтобы выбрать поле2 из таблицы2. –

ответ

0

Где находятся 1 и 200? Являются ли они в таблицах, самый простой способ сделать это - вставить из оператора Select, который объединяет таблицу 2 и где когда-либо приходит 1200.

Я предполагаю, что это будет что-то вроде:

insert into product('id','value','field2') 
Select t.ID,t.Value,t2.Field2 
from table1 t 
join table2 t2 
on t1.id = t2.id 
+0

Моя цель - сократить время обработки, поскольку этот скрипт работает непрерывно, и каждый раз сценарий будет выбирать значение поля2 из таблицы 2 в отношении некоторого id (где пункт). Я хочу, чтобы только один раз я выбирал всю запись из таблицы2 и сохранял их в массиве, тогда я использую только этот индекс ключа массива для получения релевантных данных. Я получаю значение только через вызов ключевого индекса массива. таким образом, в каждой операции вставки я буду экономить время обработки, чтобы выбрать поле2 из таблицы2. –