Как быстро добавить множество записей с некоторыми дубликатами в Extensible Storage Engine
Мне нужно добавить несколько миллионов записей данных в базу данных ESE. Среди других значений каждая запись имеет уникальное строковое значение. Это значение можно рассматривать как ключ.
Интересным для записей является то, что во входном наборе может быть несколько одинаковых экземпляров одной и той же записи. После ввода я хочу только одну запись с каждой из уникальных строк.
У меня вопрос, как это сделать - как я могу быстро отфильтровать дубликаты?
Прямо сейчас я добавляю каждую запись только после поиска ключа, если запись уже существует, я пропускаю ее. Если его нет в базе данных, я добавляю запись и прогресс. Большая стоимость здесь делает поиск по каждой записи.
какие-нибудь идеи сделать это очень быстро? в любом случае, чтобы ввести значение таким образом, что добавление дубликата не удастся?
2 ответа
Вы можете просто создать уникальный индекс для строкового столбца, передав JET_bitIndexUnique в JetCreateIndex:
JetCreateIndex(sesid, tableid, "myindex", JET_bitIndexUnique, "+string_col\0", 13, 100));
Вставка дублированного значения с ошибкой с помощью JET_errKeyDuplicate.
Этот подход лучше всего подходит, если ваши строки короткие. Если ваши строки длинные, вы должны использовать хеш строки для проверки уникальности.