Когда нам следует использовать NOT ENFORCED с ограничением внешнего ключа в DB2? - PullRequest
0 голосов
/ 04 февраля 2019

Документация IBM DB2 гласит:

Чтобы повысить производительность запросов, вы можете добавить информационные ограничения к своим таблицам.

И есть это NOT ENFORCEDвариант, который мы можем предоставить:

ALTER TABLE <name> <constraint attributes> NOT ENFORCED

Объяснение довольно простое:

NOT ENFORCED следует указывать только в том случае, если известно, что данные таблицы независимо соответствуют ограничению.Результаты запроса могут быть непредсказуемыми, если данные на самом деле не соответствуют ограничению.

Из того, что я понял - если у меня есть, скажем, foreign key, в таблице, объявленной как NOT ENFORCED, этоабсолютно то же самое, что вообще не иметь его.

Но каковы же реальные варианты его использования и когда следует использовать эту опцию? (в чем разница между ограничением NOT ENFORCEDне имея его вообще)

1 Ответ

0 голосов
/ 04 февраля 2019

Так называемые Информационные ограничения могут быть использованы для повышения производительности.Это делается путем добавления идей в базу данных.Без информационного ограничения Db2 не знал бы о взаимосвязи между двумя таблицами и связанными столбцами.Теперь компилятор и оптимизатор SQL-запросов могут использовать этот факт и оптимизировать выполнение запроса.

Как следствие, информационное ограничение должно применяться только тогда, когда данные действительно являются ограничением указанными способами.Db2 не применяет его, пользователь (вы) гарантирует это свойство данных.Следовательно, когда это не так, результаты запроса могут быть неверными, поскольку Db2 предполагает наличие взаимосвязей.

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