Search code examples
djangodjango-modelsdjango-orm

When we should use "db_index=True" in Django?


When we should define db_index=True on a model fields ?

I'm trying to optimize the application & I want to learn more about db_index, in which conditions we should use it ?

The documentation says that using db_index=True on model fields is used to speed up the lookups with slightly disadvantages with storage and memory.

Should we use db_index=True only on those fields that have unique values like the primary field id ?
What happens if we enabled indexing for those fields which are not unique and contains repetitive data ?


Solution

  • I would say you should it when you have a field that is unique for fast lookups.

    e.g., You have a table of customers with manyusers. Each row representing a user will have their own unique user_id. When you create an index, a pointer is created within the DB to where that data is stored so that the next look up won't take as long. Have a look here to learn more