Я пытаюсь сравнить две схемы, чтобы убедиться, что они синхронизированы. В одной схеме я вижу уникальный индекс на 2 столбца. В дополнение к этому я вижу уникальное ограничение, использующее уникальный индекс.
Я новичок в Oracle, но мое общее понимание и согласно это уникальное ограничение только гарантирует отсутствие дубликатов, что оно не обязательно индексируется. Для повышения производительности следует добавить индекс по столбцам FK, чтобы обеспечить эффективное выполнение ограничения.
В моей целевой базе данных у меня есть только уникальный индекс HD_FILL_DISPNSNG_FEE_VAL_AK1.
Поскольку этот индекс помечен как «УНИКАЛЬНЫЙ», разве это не обеспечивает как ограничение уникальности, так и преимущества производительности индекса? Я вижу много сообщений на эту тему, таких как указанная ссылка, но у меня возникают проблемы с ее применением в этой конкретной ситуации.
Вопросы. Будут ли какие-либо недостатки в удалении ОГРАНИЧЕНИЯ UNIQUE, поскольку у меня есть индекс уникальности? Аналогично, как уникальное ограничение, использующее индекс, отличается от уникального индекса?
CREATE UNIQUE INDEX RXFINODS_O.HD_FILL_DISPNSNG_FEE_VAL_AK1 ON RXFINODS_O.HD_FILL_DISPNSNG_FEE_VAL
(CVRG_TY_CD, VAL_EFF_START_DT)
LOGGING
TABLESPACE RXFINODS_INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MAXSIZE UNLIMITED
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
NOPARALLEL;
--
-- Non Foreign Key Constraints for Table HD_FILL_DISPNSNG_FEE_VAL
--
ALTER TABLE RXFINODS_O.HD_FILL_DISPNSNG_FEE_VAL ADD (
CONSTRAINT HD_FILL_DSPSNG_FEE_VAL_AK1
UNIQUE (CVRG_TY_CD, VAL_EFF_START_DT)
USING INDEX .HD_FILL_DISPNSNG_FEE_VAL_AK1
ENABLE VALIDATE);