【发布时间】:2016-10-28 06:02:19
【问题描述】:
我有一个 Place 模型:
class Place(models.Model):
... some not interesting fields
distances = models.JSONField()
在 JSONField(距离)中存储类似:
{
'1': 10
'2': 20
'3': 30
'4': 40
...
'1000': 10000
}
其中键是某个位置模型的“id”,值是从这个地方到这个位置的“路上时间”
如果网站用户选择位置,我会按从最近到更远的顺序显示位置:
places = Place.objects.all().order_by(
RawSQL('distances->%s', (str(selected_location_id),))
)
一切都很酷,除了性能。
但是,PostgreSQL 支持 JSONB 字段的索引(使用 Django 的 JSONField):
GIN、btree和散列
- 它们之间有什么区别?哪个适合我的例子?
- django 是否支持 JSONField 上的 db_index?如果是,如何指定使用哪个索引?
非常感谢您的帮助!
【问题讨论】:
-
链接的问题回答了您的很多问题。其余的听起来像是不应该使用 jsonb 的情况
标签: django postgresql indexing jsonb