Лучше для проверки дубликатов в таблице: кластеризованный уникальный индекс или временная таблица с CHECKSUM? - PullRequest
0 голосов
/ 04 апреля 2019

В моей таблице 6 столбцов, в которые я вставляю строки данных. Я хочу пропустить дубликаты. Что эффективнее? Имея таблицу копирования, добавьте столбцы CHECKSUM в оба из них и проверьте с помощью TRIGGER на INSERT для дубликатов. Или создайте УНИКАЛЬНЫЙ НЕКЛАСТЕРНЫЙ ИНДЕКС на 3 столбца с IGNORE_DUP_KEY = ON?

1 Ответ

1 голос
/ 04 апреля 2019

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

Однако я бы временно использовал DUP_IGNORE_KEY только при массовой вставке / переносе данных, а затем тщательно проверял полученные данные. И даже в этом случае есть несколько способов избежать этого. За 20 лет работы разработчиком программного обеспечения для баз данных мне никогда не приходилось использовать DUP_IGNORE_KEY. (На самом деле, я узнал об этом только сейчас.) Я бы, конечно, НИКОГДА не использовал бы его постоянно для индексации на производственном сервере. ИМХО, это примерно так же некрасиво, как в старом VB "ON ERROR RESUME NEXT": вы не получите немедленной реакции, если что-то пойдет не так!

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