Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Create table или Update? / 7 сообщений из 7, страница 1 из 1
23.04.2018, 11:32
    #39634588
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Create table или Update?
Добрый день. Есть таблица на 200 млн строк (t1). К ней нужно добавить столбец с данными из другой таблицы аналогичного размера (t2). Соответствие по столбцу 1 взаимно-однозначное (одна запись к одной).

Есть вариант сделать это через CREATE TABLE и JOIN:
Код: sql
1.
2.
3.
4.
5.
6.
7.
create table T as
select 
t1.col1 c1
t2.col2 c2
from t1
left join t2
on t1.col1=t2.col1


И есть вариант через UPDATE, предварительно создав в таблице t1 дополнительный пустой столбец:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
update t1
set t1.col2 =
(
select t2.col2 
from t2
where t2.col1=t1.col1
)


Update работает в десятки раз медленнее, но он предпочтительнее, так как нужно будет делать несколько таких операций (то есть присоединять новые столбцы в существующую таблицу). Есть способ как-то ускорить запрос с update, чтобы каждый раз не создавать и не удалять таблицу по 200 млн строк через CREATE TABLE и JOIN? Или может быть такую задачу по присоединению нового столбца правильнее решать каким-то другим способом? Спасибо.
...
Рейтинг: 0 / 0
23.04.2018, 12:01
    #39634618
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Create table или Update?
Код: plaintext
MERGE
...
Рейтинг: 0 / 0
23.04.2018, 12:05
    #39634621
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Create table или Update?
Roomon Соответствие по столбцу 1 взаимно-однозначное (одна запись к одной).


глянуть мож вьшка updateble
....
stax
...
Рейтинг: 0 / 0
23.04.2018, 12:13
    #39634632
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Create table или Update?
Elic, спасибо! А MERGE значительно быстрее, чем UPDATE должен работать в данном случае?
...
Рейтинг: 0 / 0
23.04.2018, 12:14
    #39634634
Roomon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Create table или Update?
Stax, не понял совет. Можете пояснить?
...
Рейтинг: 0 / 0
23.04.2018, 12:45
    #39634674
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Create table или Update?
RoomonStax, не понял совет. Можете пояснить?Бери merge и не парься. Парься только если не хватит temp/undo.
...
Рейтинг: 0 / 0
23.04.2018, 12:49
    #39634678
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Create table или Update?
RoomonStax, не понял совет. Можете пояснить?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
SQL> create table t2(id2 int primary key,n2 varchar2(10));
create table t2(id2 int primary key,n2 varchar2(10))
             *
ERROR at line 1:
ORA-00955: name is already used by an existing object


SQL> select * from t1;

        ID N
---------- ----------
         1
         2
         3 Три

SQL> select * from t2;

       ID2 N2
---------- ----------
         1 One
         2 Two

SQL> update (select * from t1,t2 where t1.id=t2.id2) set n=n2;

2 rows updated.

SQL> select * from t1;

        ID N
---------- ----------
         1 One
         2 Two
         3 Три

SQL>



....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Create table или Update? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]