id varchar(255) NOT NULL,
                  
                  
                    user_email varchar(255) NULL,
                  
                  
                    -- и еще около 20 колонок
                  
                  
                    CONSTRAINT user_project_pkey PRIMARY KEY (id)
                  
                  
                  );
                  
                  
                  хочу добавить табличку:
                  
                  
                  create table app_user (
                  
                  
                    id varchar default uuid_generate_v4(),
                  
                  
                    email varchar not null
                  
                  
                  );
                  
                  
                  и заменить в user_project колонку user_email на user_id которая будет foreign key на app_user.
                  
                  
                  в результате навалял скрипт который очень медленный:
                  
                  
                  -- наполняем app_user существующими имейлами, их получиться ~10 млн.
                  
                  
                  -- возможно ли наполнить табличку быстрее чем здесь? 
                  
                  
                  insert into app_user(email) select distinct user_email from user_project;
                  
                  
                  alter teble app_user add constraint idx_unique_email unique (email);
                  
                  
                  alter table app_user add constraint pk_id_app_user primary key (id);
                  
                  
                  -- делаем копию таблицы с новой колонкой user_id
                  
                  
                  -- тут вопрос, что должно быть быстрее: join или вложеный select?
                  
                  
                  create table new_user_project as SELECT user_project.*, (select u.id from app_user as u where user_email = u.email) as user_id FROM user_project;
                  
                  
                  alter table new_user_project drop column user_email;
                  
                  
                  --восстановляем индексы
                  
                  
                
Спросите лучше в чате по конкретной СУБД.
думал это не сильно привязано к конкретной бд)
Это даже привязано к конкретной версии конкретной СУБД. Поэтому укажите там и версию
Обсуждают сегодня