Я не уверен, как лучше сформулировать этот вопрос, так что, возможно, я пропустил ранее заданный вопрос. Не стесняйтесь закрыть это и указать мне правильный, если он существует.
У меня есть таблица с двумя важными столбцами (то есть, у нее гораздо больше, но только два имеют отношение к этому вопросу). Первый столбец - это GUID (идентификатор), а второй - это nvarchar (хранящий URL). Комбинация идентификатора и URL-адреса должна быть уникальной (поэтому один и тот же гид может повторяться, но каждая строка имеет свой URL-адрес и наоборот, но не может быть более одной строки одного и того же guid и URL)
В настоящее время перед каждой INSERT я делаю SELECT, чтобы увидеть, существует ли строка с таким же идентификатором и URL. Однако, похоже, что поиск на nvarchar идет медленно. Поэтому я думаю, что обновлю таблицу для хранения дополнительного столбца, который заполняется хешем (SHA1) URL-адреса при вставке. Теперь мы только ищем меньший хеш (varbinary?), Который, я полагаю, будет значительно быстрее, чем раньше.
Есть ли способ заставить SQL Server 2008 автоматически сохранять хэш и выполнять поиск по этому хэш-значению вместо реального текста? Я предполагаю, что индексы - это b-деревья, поэтому SQL Server должен создать b-дерево с хэш-значениями текста в поле nvarchar, и когда выполняется выбор, он должен вычислить хеш и сделайте поиск в дереве со значением хеша. Это возможно?