【发布时间】:2015-12-18 22:00:32
【问题描述】:
我正在尝试让 Django 模型按降序 (DESC) 顺序在日期字段上为我创建一个索引,但我找不到这样做的方法。基本上,我需要执行以下 SQL(在 Posgres 中):
CREATE INDEX "idx_name" ON "table" ("date" DESC);
我能得到的最接近的方法是将db_index=True 添加到生成以下 SQL 的模型中:
CREATE INDEX "idx_name" ON "table" ("date");
关闭,但不完全是。 DESC 在这里有很大的不同,因为我的查询返回了从最新到最旧的对象。
我知道我可以将原始 sql 添加到迁移中,但如果 Django 能帮我解决它会更好。
有什么想法吗?
谢谢!
【问题讨论】:
-
如何添加
class Meta的排序,例如:ordering = ['-date']? -
它不会在迁移时产生任何 SQL。根据文档 (docs.djangoproject.com/en/1.9/ref/models/options/#ordering),它对于检索对象时的默认排序很有用。实际上,它说使用它会产生性能成本,这与我想要的相反。
-
有一个 MongoDB 引擎实际上具有该功能:django-mongodb-engine.readthedocs.org/en/latest/reference/…
-
阅读一些文档:use-the-index-luke.com/sql/sorting-grouping/…,postgresql.org/docs/9.2/static/sql-createindex.html ... 看起来像在单个字段索引上添加 DESC 不会影响性能。我发布的这两个索引是等效的。不过,很高兴看看是否有解决方案。