Я получаю очень медленный поиск в моих моделях Django.
У меня есть две таблицы:
class Scan(models.Model):
scan_name = models.CharField(max_length=32, unique=True, validators=[alphanumeric_plus_validator])
class ScanProcessingInfo(models.Model):
scan_name = models.CharField(max_length=32)
processing_name = models.CharField(max_length=64)
in_progress = models.BooleanField(default=False)
Когда я выполняю следующую операцию, чтобы получить список всех объектов Scan, которые имеют ScanProcessingInfo для определенного имени_процесса:
scans = models.Scan.objects.all()
scan_set = []
for scan in scans:
if self.set_type_definition.test_scan(scan, self.arg1, self.arg2):
scan_set.append(scan)
(test_scan routes to)
def get_proc_info_been_done(scan, spd_name):
try:
proc_info = models.ScanProcessingInfo.objects.get(scan_name = scan.scan_name)
except models.ScanProcessingInfo.DoesNotExist:
proc_info = None
if proc_info == None:
return False
return not proc_info.in_progress
запрос занимает около 10 секунд. Всего 300 сканирований и 10 ScanProcessingInfos. Серверная часть базы данных - это база данных RDS MySQL. Я также ожидаю, что кто-то подскажет мне за использование строк для идентификаторов кросс-таблицы, но я сомневаюсь, что причина здесь.
Я уверен, что делаю что-то явно не так, но был бы признателен за указатель, спасибо.