首页 > 解决方案 > Django ORM 与 PostgreSQL 原始 sql

问题描述

我的 django 应用程序在服务器 1上运行,该服务器连接到server2 上的 Amazon RDS (PostgreSQL)。在日常工作中,我必须经常与数据库交互以写入/获取/查询数据。

目前,我在整个应用程序中遵循 django ORM 方式。我只是想知道如果我在 ORM 上使用 django.db 连接游标使用 PostgreSQL raw sql quereis,性能是否会有任何改进?

以下是一个示例查询的建议方法。

  1. Django ORM

    table_name.objects().all()

  2. 使用 django.db 连接游标的 PostgreSQL 原始 sql 查询

    在此处输入图像描述

如果我的数据库在另一台服务器的 RDS 上运行,有人可以建议上述哪一项将导致更快的性能提升

标签: sqldjangodatabasepostgresqloptimization

解决方案


使用原始查询将导致几乎没有性能差异。ORM 确实使用了几个周期来构造查询,但这与发送查询、数据库接收、解释和运行查询以及发回结果的工作相比是微不足道的。

在某些情况下,ORM 可能确实会进行(过度)复杂的查询,但如果您获取所有记录,情况并非如此。有时需要 ORM 专业知识(就像它需要 SQL 专业知识一样)才能找到性能更好的查询。

此外,您还可以让 Django ORM 为您完成工作,使用.values()它可以更方便地构造DataFrame

res = pd.DataFrame(table_name.objects.values())

推荐阅读