Оптимизация SQLite для миллионов записей?

Я пытаюсь решить проблему с помощью базы данных SQLite и модулей Perl. В конце концов, я буду регистрировать десятки миллионов записей. Единственный уникальный идентификатор для каждого элемента - это текстовая строка для URL. Я думаю сделать это двумя способами:

Способ № 1: Иметь хороший стол, плохой стол, несортированный стол. (Мне нужно проверить html и решить, хочу ли я его.) Скажем, у нас всего 1 миллиард страниц, 333 миллиона URL в каждой таблице. У меня есть новый URL для добавления, и мне нужно проверить, есть ли он в какой-либо из таблиц, и добавить его в Unsorted, если он уникален. Кроме того, я бы переместил много строк с этой опцией.

Способ № 2: У меня есть 2 стола, Мастер и Гуд. У Master есть все URL-адреса на 1 миллиард страниц, а у Good - 333 миллиона, которые я хочу. Новый URL, нужно сделать то же самое, за исключением того, что на этот раз я запрашиваю только одну таблицу и никогда не удаляю строку из Master, только добавляю данные в Good.

В общем, мне нужно знать, как лучшебыстро запросите огромную базу данных SQLite, чтобы увидеть, является ли текстовая строка ~ 20 символов уникальной, а затем добавьте, если это не так.

Изменить: я сейчас пытаюсь заставить Беркли DB работать с использованием модуля Perl, но не игра в кости. Вот что у меня есть:

use BerkeleyDB;

$dbFolder = 'C:\somedirectory';
my $env = BerkeleyDB::Env->new ( -Home => $dbFolder );

my $db  = BerkeleyDB::Hash->new (
-Filename => "fred.db", 
-Env => $env );
my $status = $db->db_put("apple", "red");

И когда я запускаю это, я получаю следующее:

Can't call method "db_put" on an undefined value at C:\Directory\perlfile.pl line 42, <STDIN> line 1.

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

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