Каков наилучший способ хранения и индексации URL-адресов в SQL Server 2005?
У меня есть таблица WebPage, в которой хранятся метаданные и контент о веб-страницах. У меня также есть много других таблиц, связанных с таблицей WebPage. Все они используют URL в качестве ключа.
Проблема в том, что URL-адреса могут быть очень большими, и использование их в качестве ключа делает индексы больше и медленнее. Сколько я не знаю, но я много раз читал, используя большие поля для индексации, следует избегать. Предполагая, что URL - это nvarchar (400), они являются огромными полями для использования в качестве первичного ключа.
Какие есть альтернативы?
Какова будет большая вероятность использования URL-адреса в качестве ключа вместо поля меньшего размера.
Я просмотрел таблицу WebPage, имеющую столбец идентификаторов, а затем использовал ее в качестве первичного ключа для WebPage. Это уменьшает размер всех связанных индексов и делает их более эффективными, но это затрудняет импорт данных. Каждый импорт для связанных таблиц должен сначала искать, какой идентификатор URL, прежде чем вставлять данные в таблицы.
Я также поиграл с использованием хеша для URL, чтобы создать меньший индекс, но все еще не уверен, что это лучший способ сделать что-то. Это не будет уникальный индекс и будет подвержен небольшому количеству коллизий. Поэтому я не уверен, какой внешний ключ будет использован в этом случае ...
Там будут миллионы записей о веб-страницах, хранящихся в базе данных, и будет много пакетных обновлений. Также будет много активности чтения и агрегирования данных.
Есть мысли?