Выполнение 10 000 запросов SELECT к SQLite занимает несколько часов.Python

Программы на Python
Anonymous
Выполнение 10 000 запросов SELECT к SQLite занимает несколько часов.

Сообщение Anonymous »

Я использую Python и библиотеку sqlite3 для выполнения около 10 000 запросов SELECT к одной таблице. Запуская его локально на моем ноутбуке не с высокими характеристиками, но и не древним, это занимает шесть или семь часов. Я создал составной индекс для полей, но это не имело никакого значения. Вот таблица и запрос (таблица представляет собой данные геолокации для IP-адресов, где «адреса» представляют собой целые числа, полученные путем удаления точек):

Код: Выделить всё

CREATE TABLE ip2location (ip_from INT, ip_to INT, country_code VARCHAR(2), country_name VARCHAR(255), region_name VARCHAR(255), city_name VARCHAR(255));
CREATE INDEX `ix_ip_between` ON `ip2location`(`ip_from`, `ip_to`);

SELECT country_name, city_name FROM ip2location
WHERE ip_from = ?
AND country_name != '-';

Код: Выделить всё

query = "SELECT country_name, city_name FROM ip2location \
WHERE ip_from = ? \
AND country_name != '-';"
results = []
for ip in ips:
cur.execute(query, [ip, ip])
result = cur.fetchone()
if result:
results.append(result)
Я ожидал, что это займет некоторое время, но не так долго. Проблема связана с Python, SQLite или мной? Спасибо.


Подробнее здесь: https://stackoverflow.com/questions/782 ... akes-hours

Вернуться в «Python»