3 различных Вставки в #table выберите параллельно SQL Server 2008 - PullRequest
1 голос
/ 06 мая 2011

У меня 1 temporary table, и я делаю что-то вроде:

Insert into #table1 select ...  from #temporal
Insert into #table2 select ...  from #temporal
Insert into #table3 select ...  from #temporal

Поскольку каждый выбор занимает значительное время, я бы хотел парализовать эти 3 запроса, есть ли способ сделать это в SQL Server 2008

1 Ответ

0 голосов
/ 06 мая 2011

Похоже, корень проблемы в том, что SELECT from #temporal - это проблема производительности. У вас есть индекс для этой временной таблицы #temporal? Вероятно, индекс (или обновление статистики) поможет вам избежать написания большего количества кода для решения этой проблемы.

Вы можете или пытались измерить производительность по сравнению с сохранением результатов этого #temporal SELECT в табличной переменной?

DECLARE @myTemporal TABLE (id int, foo varchar(100))
INSERT INTO @myTemporal (id, foo)
    SELECT id, foo FROM #temporal;

Тогда ваши n INSERT могут извлекать из табличной переменной, а не дорогой / неформатный запрос.

Insert into #table1 select id, foo from @myTemporal;
Insert into #table2 select id, foo from @myTemporal;
Insert into #table3 select id, foo from @myTemporal;

Преимущество заключается в том, что вам не нужно будет выполнять SELECT 3x для вашей временной таблицы. Вы будете вставлять в ваши 3 временные таблицы из табличной переменной. Все строки, без предложения WHERE.

...