gpt4 book ai didi

python - 在 Django PostgreSQL 中排序太慢

转载 作者:行者123 更新时间:2023-11-29 12:23:41 32 4
gpt4 key购买 nike

我有两个使用一对一链接连接的 Django 模型。 Django 生成此查询以排序和限制 ChangeList 中的 (PER_PAGE=20) 个对象:

SELECT
"test_model_object"."id",
"test_model_object"."sorting_field_asc",
"test_model_object"."sorting_field_desc",
... about fifteen fields ...
"test_model_one_to_one_element"."id",
"test_model_one_to_one_element"."number"

FROM "test_model_object"

INNER JOIN "test_model_one_to_one_element"
ON ("test_model_object"."test_model_one_to_one_element_id" = "test_model_one_to_one_element"."id")

ORDER BY "test_model_object"."sorting_field_asc" ASC, "test_model_object"."sorting_field_desc" DESC LIMIT 20;

但是在 PostgreSQL 中,对于 150 万个对象(大约 6 秒)的执行速度非常慢。我假设 uuid 对排序过程进行了一些不需要的调整,但带有 int 索引的测试模型表明并非如此。有哪些解决方案(可能是 postgres 设置)可以加快此 Django PostgreSQL 查询的速度?

最佳答案

您在 PostgreSQL 表上创建了哪些索引?

execution is very slow in PostgreSQL for 1.5 million objects

这是对数百万条记录的预期,是的。

如果您需要快速操作,这只是一个问题。 PostgreSQL 和 Django 无法判断您希望哪些操作更快,因此默认情况下不创建索引。

因此,由于您提出了这个问题,我们假设您希望该操作更快。一种方法是在写入记录时以速度换取查询速度。

您可以 create an index on particular fields ,作为将一些较慢的写入操作换成更快的查询操作的一种方式。 index will be used also when sorting with ORDER BY .

如果它像想在 Django 模型的一个字段上创建索引一样简单,db_index field option指定。

关于python - 在 Django PostgreSQL 中排序太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54860175/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com