Я пытаюсь создать базу данных sqlite, импортировав файл csv с URL-адресами. Файл содержит около 6 миллионов строк. Вот команды, которые я использовал
create table urltable (url text primary key);
.import csvfile urldatabase
После примерно 3 миллионов URL-адресов скорость сильно замедляется, и мой жесткий диск продолжает непрерывно вращаться. Я попытался разбить файл CSV на 1/4 части, но я столкнулся с той же проблемой.
Я читал похожие посты на stackoverflow и пытался использовать BEGIN...COMMIT
блоки и PRAGMA synchronous=OFF
, но ни один из них не помог. Единственный способ создать базу данных - это удалить ограничение первичный ключ из URL. Но затем, когда я запускаю команду select, чтобы найти конкретный URL-адрес, это занимает 2-3 секунды, что не будет работать для моего приложения.
С первичным ключом, установленным на URL, выбор происходит мгновенно. Пожалуйста, сообщите мне, что я делаю не так.
[Изменить]
Сводка предложений, которые помогли:
- Уменьшить количество транзакций
- Увеличение размера страницы и размера кэша
- Добавить индекс позже
- Удалить избыточность из URL
Тем не менее, при использовании основного индекса размер базы данных более чем в два раза превышает исходный файл CSV, который я пытался импортировать. Есть ли способ уменьшить это?