@Yasuro

Как настроить автоинкремент в sqlite, чтобы он инкрементировался после выполнения условия?

Есть большая база, в которой только одна таблица (имя таблицы: main), в которой два атрибута - user_id (integer) и id (первичный ключ) и 14 млн записей.
Ежедневно, к этой базе добавляются еще, в среднем, по 3 млн записей, но вставиться должны только те user_id, которых в базе еще нет. От 3 млн остается где-то около 500к записей. Это происходит каждый день.
Таким образом, каждый день в базу где уже есть 14 млн записей будет происходить вставка еще 3 млн из которых 2.5 млн уже есть и они должны игнорироваться, а попадать в итоге должны только 500к, которых в базе еще нет. Кроме этого, мне потом эти 500к записи надо получить, чтобы узнать каких конкретно 500к еще нет в базе.
Раньше я делал это через notepad ++, но на 6 млн записей комп уже не тянет, пришлось перейти на БД.

Я считаю, что самый разумный способ это сделать так:
1)Сначала посмотреть максимальный id, запомнить его.
2)использовать INSERT OR IGNORE и вставить 3 млн записей.
3)select user_id from main where id>айдишника из первого пункта.

когда я использую INSERT OR IGNORE, идентичные записи хоть и не добавляются, но id инкрементится все равно. И получается, что каждый день 2.5 млн записей которые уже есть в базе будут инкрементить id на эти 2.5 млн. Мне кажется наступит день, когда id не сможет увеличиваться уже. По этому, мне хочется, чтобы id увеличивался каждый раз на столько, сколько записей было реально вставлено.
5ca5d08147bb9152364369.png

Как это сделать?
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы