что является лучшей практикой для обновления таблицы «один ко многим» - PullRequest
1 голос
/ 09 января 2020

у меня два стола. одна таблица 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?

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