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
событие для отслеживания статуса обратного вызова.