Saya memiliki model Tempat:
class Place(models.Model):
... some not interesting fields
distances = models.JSONField()
Di JSONField (jarak) menyimpan sesuatu seperti:
{
'1': 10
'2': 20
'3': 30
'4': 40
...
'1000': 10000
}
di mana kuncinya adalah 'id' dari beberapa model Lokasi, dan nilai - 'waktu perjalanan' ke Lokasi ini dari Tempat ini
Jika pengguna situs web memilih Lokasi, saya menampilkan Tempat secara berurutan dari yang terdekat hingga yang terjauh dari Lokasi yang dipilih:
places = Place.objects.all().order_by(
RawSQL('distances->%s', (str(selected_location_id),))
)
Dan semuanya keren, kecuali performa.
Namun, PostgreSQL mendukung pengindeksan untuk bidang JSONB (yang menggunakan Django untuk JSONField):
GIN, btree dan hash
- Apa perbedaan di antara keduanya? Mana yang cocok untuk contoh saya?
- Apakah Django mendukung db_index di JSONField? Jika ya, bagaimana cara menentukan indeks mana yang akan digunakan?
Terima kasih banyak atas bantuannya!