Django ORM与PostgreSQL原生SQL对比

3
我在Server 1上运行我的Django应用程序,它连接到位于Server 2上的Amazon RDS(PostgreSQL)。每天,我经常需要与数据库进行交互以写入/获取/查询数据。
目前,我在整个应用程序中都遵循Django ORM的方式。我只是想知道,如果我使用django.db连接游标来执行PostgreSQL原始SQL查询,是否会提高性能?
以下是一个示例查询的建议方法。
1. Django ORM
table_name.objects().all()
2. 使用django.db连接游标的PostgreSQL原始SQL查询: enter image description here 请问有人可以建议一下,如果我的数据库在另一台服务器上运行,那么上述哪种方法会导致性能更快的提升?

3
不,ORM 的开销与与数据库的往返相比完全可以忽略不计。 - Willem Van Onsem
Django使用psycopg2与PostgreSQL通信。这里有一个使用该库进行写入和读取的不同方法的性能比较。还有一些倡议,比如这个,试图将它们中最快的方法用于Django。但是,如果你已经考虑使用原始SQL操作,直接使用psycopg2可能比强制Django以某种方式使用它更容易、更快捷和更灵活。 - Zegarek
1个回答

4
使用原始查询与ORM相比,几乎没有性能差异。ORM确实会使用一些周期来构建查询,但这与发送查询、数据库接收、解释和运行查询以及将结果发送回客户端相比微不足道。
在某些情况下,ORM确实可能会生成(过于)复杂的查询,但如果您获取所有记录,则不是这种情况。有时需要ORM专业知识(就像需要SQL专业知识一样),以找到执行更好的查询。
此外,您可以使用values()让Django ORM为您完成工作,从而更方便地构造一个DataFrame
res = pd.DataFrame(table_name.objects.<b>values()</b>)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接