23👍
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
9👍
When you set db_index=True
on some field, queries based on that field would be much faster O(log(n)) instead O(n).
Under the hood, it is usually implemented using B-Tree.
The trade-off for these accelerated queries is increased memory usage and time for writes. So the best use case for indexing would be if you have a read-heavy table that is often queried by non-primary field.
- [Django]-How do you choose between Memcached, Redis and Varnish?
- [Django]-Add request.GET variable using django.shortcuts.redirect
- [Django]-How to avoid AppConfig.ready() method running twice in Django
7👍
You should use db_index=True
when you use unique=True
, there is a specific reason to use it,
By using this method you can boost a little bit of performance,
When we fire a query in SQL, finding starts from the top to bottom
Case: ‘Without db_index=True’:
It will search and filter till all bottom rows even if we find the data
Case: ‘With db_index=True’:
When Object finds it will just stop their
It will boost a little bit of performance
- [Django]-Django Query Related Field Count
- [Django]-Django filter vs exclude
- [Django]-Using IntellijIdea within an existing virtualenv