@cicwak

Как реализовать бинарный поиск в базе Django?

Захотелось сделать мини приложения, подготовил базу состоящую из 10 млн уникальных имен(и еще таблица на 9 млн фамилий, тоже уникальных). Но производя поиск по этим базам, один запрос выполняется ~1.5 секунды. Что долго, но я делаю 2 запроса(имя и фамиилия), в итоге 3.

Уточнение, база находится в отсортированном состояние, по именам и фамилиям(от меньшего к большему).

Вопросы у меня возникли такие:
1. Повлияет, если повлияет то как, перенос всех данных из sqlite3 в postqresql в самом django?
2. Можно ли мгновенно получать значение из базы sqlite3 по индексу? И если можно, то прошу показать пример как это сделать в модели джанго.


На данный момент получаю значение вот так:
try:
        name_count = Names.objects.get(name=name).count
except ObjectDoesNotExist:
        name_count = 1


Это размеры таблиц:
609c4b5a78988764243635.png

А это что хранится в таблицах:
609c4c12be3f6608685038.png
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
@deliro
Агрессивное программирование
1. Очень сомневаюсь.
2. Запрос Names.objects.get(name=name).count прекрасно использует индекс, если ты его, конечно, создал. 14 миллионов строк для индекса, тем более, уникального — очень мало. А если не создал, то это фулскан и очень долго
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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