--- РЕДАКТИРОВАТЬ: Исходя из изменений в вопросе, добавление идентификационного / суррогатного ключа не может быть решением этой проблемы.
- Оригинальный ответ.
Один из случаев повышения производительности - это когда вы используете объединения и когда у вас есть дочерние таблицы.
В отсутствие суррогатных ключей вам придется дублировать все 4 ключа th4к дочерней таблице и присоединиться к 4 столбцам.
t_parent
-------------
col1,
col2,
col3,
col4,
col5,
constraint pk_t_parent primary key (col1,col2,col3,col4)
t_child
----------
col1,
col2,
col3,
col4,
col7,
col8,
constraint pk_t_child primary key (col1,col2,col3,col4, col5),
constraint fk_parent_child foreign key (col1, col2, col3, col4) references
t_parent ((col1, col2, col3, col4))
Объединения будут включать все 4 столбца ..
select t2.*
from t_parent t1, t_child t2
where (t1.col1 = t2.col1 and
t1.col2 = t2.col2 and
t1.col3 = t2.col3 and
t1.col4 = t2.col4
)
Если вы используете суррогатный ключ и создаете уникальное ограничение для 4 столбцов (которые теперь являются частьюпервичный ключ), он будет эффективен, и данные будут по-прежнему проверяться, как и раньше.