Ускорьте ОБНОВЛЕНИЕ с помощью запроса SELECT - PullRequest
0 голосов
/ 20 августа 2009

У меня есть две таблицы:

  • Таблица 1 содержит Эпизод и Код с отдельным Эпизодом.
  • Таблица 2 содержит Эпизод и Код, но Эпизод не отличается (другие поля таблицы, не относящиеся к задаче, делают каждую строку уникальной).

Я хочу скопировать код Таблицы 1 в Таблицу 2 для каждого эпизода. Текущий код для этого выглядит следующим образом:

UPDATE Table2
SET Table2.Code = (SELECT TOP 1 Code FROM Table1 WHERE Episode = Table2.Episode)

Это занимает часы и часы. (Я не знаю точно, сколько часов, потому что я отменил его на отметке около 20 часов.) Они являются большими столами, но, конечно, есть более быстрый путь?

Ответы [ 3 ]

5 голосов
/ 20 августа 2009

У меня нет под рукой SQL Server, и я не совсем уверен, но, похоже, я помню, что был синтаксис, подобный следующему, который, вероятно, должен ускорить процесс.

 UPDATE Table2 SET Table2.Code = Table1.Code FROM Table1 
 WHERE Table1.Episode = Table2.Episode
1 голос
/ 21 августа 2009

Вы можете использовать UPDATE с такими объединениями. Обратите внимание, что вы должны указать FROM.

UPDATE MyTable
SET MyColVal = O.NewVal
FROM MyTable T
INNER JOIN MyOtherTable O ON T.Id=O.Id
WHERE ...

http://doc.ddart.net/mssql/sql70/ua-uz_3.htm

1 голос
/ 20 августа 2009

Есть ли индексы в столбцах "Код" и "Эпизод" в обеих таблицах? Это определенно поможет ускорить процесс!

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...