Django различные «точные поиски элементов» многократные оптимизации - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть таблица с атрибутами (id, email, score, date_added, state, fk, etc.), которая хранится в базе данных MySql. В настоящее время данные будут вводиться аддитивным способом, в который может быть добавлена ​​та же запись (новая id), но с более поздней датой и измененным состоянием (для ведения истории).

Я использую одну Django конечная точка, которая примет одну запись для приема. Эта конечная точка сначала проверяет, является ли это новое электронное письмо или уже существует, путем запроса model.objects.filter(email__iexact=email).first(). Этот запрос используется для того, чтобы оставшиеся данные строки fk, etc. можно было скопировать без повторной обработки.

Есть ли способ оптимизировать и увеличить скорость этого процесса / поиска (возможно, с помощью Django кеширование или простые настройки)? Если это невозможно, каковы самые большие ограничения дизайна, которые необходимо изменить, чтобы обеспечить улучшение / оптимизацию запросов к базе данных.


Примечания:

  • Таблица, вероятно, стало слишком большим, чтобы его можно было хранить как python dict,
  • . В настоящее время я пытался обернуть однократный вызов методом batch_ingest, который использует транзакцию atomi c и весь пакет, чтобы уменьшить запись в каждый звонок; Похоже, что это помогает уменьшить использование диска при обработке, но не уменьшает время поиска на вызов.
  • Разделение таблицы на несколько в настоящее время не является приоритетом
...