Найти - Пользователи
Полная версия: SQLite vs MS Acess: помогите ускорить работу SQLite.
Начало » Базы данных » SQLite vs MS Acess: помогите ускорить работу SQLite.
1
Dr.Livsi
Собственно, задача следующая:
есть две таблицы price_konk (code_konk integer, price_konk float) и codes_tbl(code konk, code_our).
содержимое таблиц price_konk - около 10тыс.записей, codes_tbl - около 40 тыс. записей.
из этих двух таблиц необходимо сделать запрос на объединение, который будет возвращать code_our, price_konk
собственно, он у меня получился следующим:
'select codes_tbl.code_our, price_konk.price from left join codes_tbl on price_konk.code_konk=codes_tbl.code_konk where codes_tbl.code_our is not null'
далее данные из запроса на объединение передаются в список кортежей.
Собственно, данное решение работает. Но медленно. Т.е. объединение занимает на компьютере (Inter core duo e7200) около 50 секунд. Тогда как такой же запрос в БД MS Access выполняется около 1 секунды. При этом в интернете пишут, что SQLite быстрее ms access. Может быть кто-нибудь предложит вариант, как ускорить работу?
Lexander
Индекс по полю, которое указано в условии есть?
Lexander
Ну и результат explain query plan хотелось бы увидеть.
Dr.Livsi
Lexander
Индекс по полю, которое указано в условии есть?
нет, индексов нет

Lexander
Ну и результат explain query plan хотелось бы увидеть.
а это что такое?
Lexander
Вам нужны индексы на поля code_konk (в обеих таблицах) и code_our. При таком объеме данных они уже играют важную роль в скорости выполнения запросов. Если code_konk - поле автоинкрементное, то индекс по нему уже есть и его создавать не нужно (в одной из таблиц, во второй - нужно).

explain query plan позволяет увидеть как строиться запрос. Можно определить причины тормозов.

Начните с индексов.
Dr.Livsi
хорошо, начну с индексов. А как посмотреть explain query plan?
Lexander
Например, в консоли, запустив утилиту sqlite3.
Далее смотрите в документации ключевое слово EXPLAIN.
Dr.Livsi
Сделал индексы - скорость увеличилась примерно в 100(!!!) раз, может больше (было 55 сек, стало меньше 1 секунды). Большое спасибо за подсказку.
Lexander
Поздравляю.
Всегда пожалуйста.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB