2010-11-15 3 views
2

У меня есть таблица со столбцом для записи XML-файла как (nvarchar (max)) и выполнена хэш-функция (Md5) в этом столбце, чтобы получить хэш-ключ, который поможет в поиске, а также поддерживает уникальность. Обычно это более 900 байтов. Теперь я понял, что хэш-ключ не гарантирует уникальности, так как я просто сделал подсчет повторяющихся строк в этом столбце и был поражен, и когда я попытался создать уникальный индекс в самом столбце хеш-ключа , SQL SERVER дал мне ошибку не может создать уникальный индекс на недетерминированном столбце .. что-то вроде этого.уникальное ограничение на большое текстовое поле

Теперь я искал и обнаружил, что в некоторых случаях я должен использовать тип (ntext) и создавать на нем уникальный индекс; другие упоминают использование контрольной суммы и индекс на этом, в то время как другие упоминают триггеры, контрольную сумму и т. д. Какой был бы лучший способ реализовать в этом поле уникальность, имея в виду, что в таблице уже есть 22 миллиона записей, и я не могу позволить себе проиграть любые данные. Заранее спасибо

ответ

2

Корпорация Майкрософт рекомендует не использовать типы ntext, поскольку они будут устаревать в будущем. Документация: here. Поэтому я бы пошел использовать контрольные суммы и поместил на них уникальный индекс. This post обсуждает это.

Смежные вопросы