у меня два стола. одна таблица USER
, а другая USER_MULTIVALUED_ATTRIBUTES
. USER
имеет много USER_MULTIVALUED_ATTRIBUTES
около 15 атрибутов. Таблица USER
имеет 18_000_000 строк, а USER_MULTIVALUED_ATTRIBUTES
имеет 100_000_000 строк. DDL похож на
create table USER
(
ENTRYUUID VARCHAR2(36) not null,
USERNAME VARCHAR2(254) not null,
EMAILHASH VARCHAR2(128) not null,
EXTERNALID VARCHAR2(256),
DISPLAYNAME VARCHAR2(512),
GIVENNAME VARCHAR2(256),
...
}
create table USER_MULTIVALUED_ATTRIBUTES
(
ATTRIBUTEID NUMBER not null
ENTRYUUID VARCHAR2(36) not null,
ATTRIBUTENAME VARCHAR2(64) not null,
ATTRIBUTETYPE VARCHAR2(64),
ATTRIBUTEVALUE VARCHAR2(512) not null,
CREATETIME TIMESTAMP(6) default SYSDATE,
LASTMODIFIEDTIME TIMESTAMP(6) default SYSDATE,
USERBUCKETID NUMBER default 0 not null
)
Теперь я хочу обновить путь около 200000 пользователей. Во-первых, обновите таблицы USER
одну за другой, об обновлении таблиц USER_MULTIVALUED_ATTRIBUTES
, один из способов - обновить пользователя по одному удалите все MULTIVALUED_ATTRIBUTES и вставьте новые MULTIVALUED_ATTRIBUTES для каждого пользователя. Другой способ - обновлять пользователя по одному, выбирать все MULTIVALUED_ATTRIBUTES и сравнивать их с входными данными MULTIVALUED_ATTRIBUTES, а затем обновлять изменение MULTIVALUED_ATTRIBUTES. какой путь лучше? а у тебя есть другие sqlapporach?