Чи генерує Django автоматично індекси для зовнішніх ключів, чи це просто залежить від базової політики БД?
Відповіді:
Django автоматично створює індекс для всіх models.ForeignKey
стовпців.
Індекс бази даних автоматично створюється на
ForeignKey
. Ви можете вимкнути це, встановившиdb_index
наFalse
. Ви можете уникнути накладних витрат на індекс, якщо ви створюєте зовнішній ключ для узгодженості, а не об'єднання, або якщо ви будете створювати альтернативний індекс, такий як частковий або багаторазовий індекс стовпця.
./manage.py sql appname
і ви побачите оператори SQL для створення індексу. Вони з’являються відразу після SQL для створення останньої необхідної таблиці.
./manage.py sqlindexes appname
за індексами самі.
./manage.py sqlindexes appname
вже не працює в останніх версіях Django.
db_index
параметра у ForeignKey, який за замовчуванням має значення True.