Пытаясь найти подходящее доменное имя .com, поэтому я загрузил полный список доменов .com из Verisign с целью выполнить несколько SQL запросов к нему. Одна из ключевых целей - запустить запрос, проверяющий список слов английского языка размером с английский язык sh, чтобы выяснить, есть ли у него домен a.com. Частично я не пользуюсь онлайн-сервисом, потому что я не нашел сервис, который бы давал мне такой точный контроль запросов, но также потому, что мне любопытно, как это сделать.
Мой первый шаг был импортировать файл Verisign com.zone (текстовый файл) в версию SQL Server для локального разработчика, используя встроенный мастер импорта плоских файлов. Он создал столбец с именем RawData
(тип данных nvarchar(450)
, без нулей) в таблице с именем Com
. У него ~ 352 миллиона записей. Записи нуждаются в некоторой очистке (например, не нужны подробности о серверах имен, и некоторые записи не анализируются так же, как другие), но сами доменные имена, кажется, были успешно импортированы.
Я также создал другую таблицу (~ 372K записей, nvarchar(450)
, без нулей) с именем Words
, в которой столбец с именем Word
содержит список большинства слов Engli sh (например, inte rnet, был, сделан, для, кошки, видео, и т. Д. c .. без определений, только одно слово на запись).
Непосредственным препятствием, с которым я столкнулся, является производительность. Даже простой запрос c для проверки доступности одного доменного имени медленный. Когда я запускаю
SELECT *
FROM Com
WHERE RawData = '%insert-some-domain-name-here%'
, время выполнения составляет примерно 4 минуты (при использовании ноутбука с i9-9880h, 32 ГБ ОЗУ, 2 ТБ NVMe SSD).
С учетом того, что я предпочел бы не делать ie старости до того, как закончился какой-либо теоретический запрос размера словаря, любые предложения о том, как написать запрос и / или изменения в базе данных, чтобы привести меня к конечной цели: достаточно быстрый поиск, который генерирует список английских sh слов, которые не имеют доменных имен.