C # и SQLServer нормализуют большие наборы URL

У меня есть много таблиц в базе данных, которые имеют по крайней мере один столбец, который содержит URL. И они многократно повторяются по всей базе данных. Поэтому я нормализую их для выделенной таблицы и просто использую числовые идентификаторы везде, где они мне нужны. Мне часто нужно присоединяться к ним, чтобы числовые идентификаторы были намного лучше, чем полные строки.

ВMySql + C++, чтобы вставить много URL в один удар, я использовал несколько строкINSERT IGNOREs или жеmysql_set_local_infile_handler(), Затем партияSELECT сIN () вытащить идентификаторы обратно из базы данных.

ВC# + SQLServer Я заметил, что естьSqlBulkCopy класс, который очень полезен и быстр в массовой вставке. Но мне также нужен массовый выбор для разрешения идентификаторов URL после их вставки.Есть ли такой вспомогательный класс, который будет работать так же, какSELECT WHERE IN (many, urls, here)?

Или у вас есть лучшая идея для последовательного преобразования URL-адресов в числа в C #? Я думал оcrc32с помощью URL илиcrc64Я беспокоюсь о столкновениях. Мне было бы все равно, если столкновений мало, но если нет ... это было бы проблемой.

PS: Мы говорим о десятках миллионов URL, чтобы получить представление о масштабе.

PS: Для основной большой вставки,SQLBulkCopy быстрее чемSqlDbType.Structured, Плюс это имеетSqlRowsCopied событие для отслеживания статуса обратного вызова.

Ответы на вопрос(2)

Ваш ответ на вопрос