Почему функция объяснения () Django ORM не дает ожидаемого результата? - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь понять, как работает функция .explain() в Django ORM .

Официальная документация здесь говорит об этом.

print(Blog.objects.filter(title='My Blog').explain())

дает вывод ниже.

Seq Сканирование в блоге (стоимость = 0,00..35.50 строк = 10 по ширине = 12). Фильтр: (заголовок

)

= 'Мой блог' :: bpchar)

Но если я попытаюсь напечатать ту же вещь в моей локальной оболочке Django , она выдаст мне другой вывод, как показано ниже.

print(OCUser.objects.all().explain())

1024 * дает *

ПРОСТО alyssa_ocuser Нет ВСЕХ Нет Нет Нет Нет 2853 100,0 Нет

, что не похоже на то, что указано в официальной документации.

Я не уверен, что это SIMPLE , и все эти значения None . Может кто-нибудь объяснить, пожалуйста?

Когда я фильтрую запрос, я получаю, как показано ниже.

print(OCUser.objects.filter(chain_code=110).explain(format='text'))

1 ПРОСТО alyssa_ocuser Нет ВСЕХ Нет Нет Нет Нет 2853 10.0 Использование где

Я что-то не так делаю?

Python: 3.7.3
Django: 2.1.5
Mysql: Ver 14.14 Distrib 5.7.26

1 Ответ

0 голосов
/ 03 июля 2019

explain() буквально переводится в необработанный SQL EXPLAIN, который специфичен для базы данных, которую мы используем.

В официальной документации они использовали Postgres, где, как я использовал MySQL DB.

Я получил вывод, специфичный для MySQL, который совпадает с EXPLAIN SELECT * FROM TABLE_NAME.

...