У меня есть простое приложение Django, всего две модели и вид.Всякий раз, когда я запрашиваю базу данных, первый запрос всегда занимает около секунды, а любой запрос после этого почти мгновенный.
Мой взгляд выглядит следующим образом:
def my_view(request):
start = time.time()
print('0', time.time() - start)
a = TestClass.objects.get(name="test")
print('1', time.time() - start)
b = TestCustomer.objects.get(name="test")
print('2', time.time() - start)
return render(request, 'test.html', {})
Когда я запускаю его, я получаю следующий вывод:
0 0.0
1 1.0049302577972412
2 1.0059285163879395
, что означает, что первый запрос намного медленнеечем второй.
Если я закомментирую первый запрос (запрос TestClass
), я получу следующий вывод:
0 0.0
1 0.0
2 1.0183587074279785
, означающий, что запрос TestCustomer внезапно стал намного медленнее.Обе модели имеют только одно поле (name
, которое является CharField).
Почему первый запрос всегда намного медленнее?Я пытался отключить отладку, но это не имеет значения.И если я запускаю запросы напрямую, в обход Django, они мгновенные:
SELECT `customers_testcustomer`.`id`,
`customers_testcustomer`.`name`
FROM `customers_testcustomer`
WHERE `customers_testcustomer`.`name` = 'test';
/* Affected rows: 0 Found rows: 1 Warnings: 0 Duration for 1 query: 0,000 sec. */