Производительность SQL-запроса - PullRequest
0 голосов
/ 19 июля 2011

Я пишу скрипт для переноса моей таблицы пользователей. В общем, у меня есть 3 дБ таблицы: события, пользователи, новички. Таблица users должна быть заменена таблицей newusers и будет удалена позже. В таблице newusers есть столбец со значением идентификатора oldusers (PK).

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

Я написал следующее:

update events2
 set newusersid = newuser.id
 from events2 e
 inner join newusers newuser on newuser.olduserid = e.userid;

но выполнение занимает очень много времени. Есть ли улучшенный способ

Одна из причин миграции заключается в том, что мы хотели изменить значение id в таблице newusers, чтобы я не мог повторно использовать те же значения PK для соответствующих записей пользователей.

спасибо за вашу помощь

Н.

Ответы [ 3 ]

2 голосов
/ 19 июля 2011

Есть ли у вас индекс для таблицы newuser с olduserid и userId в этом порядке? Это должно немного ускорить запрос.

Связано, если вы обновляете миллионы строк в таблице событий, вы достигнете предела, насколько быстро может выполняться запрос.

1 голос
/ 19 июля 2011

Ваш запрос кажется неправильным.Разве это не должно быть следующим?

update events2
set newusersid = newuser.id
from newusers newuser
where newuser.olduserid = events2.userid;
0 голосов
/ 19 июля 2011
  1. Убедитесь, что у вас есть INDEX на events2.userid и newusers.olduserid
  2. Вы можете попробовать использовать запрос SELECT INTO, но не уверены, что это повлияет на производительность

Требуется дополнительная информация о вашей базе данных, таблицах и оборудовании.

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