У меня есть таблица с атрибутами (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 и весь пакет, чтобы уменьшить запись в каждый звонок; Похоже, что это помогает уменьшить использование диска при обработке, но не уменьшает время поиска на вызов. - Разделение таблицы на несколько в настоящее время не является приоритетом