Mahesh
Mahesh

Reputation: 1333

Django ORM vs PostgreSQL raw SQL

I have my django app running on Server 1 which is connected to Amazon RDS (PostgreSQL) present on Server 2. On a day-to-day basis, I have to interact with database often to write/fetch/query data.

Currently, I am following the django ORM way across the app. I just wanted to know if there would be any improvement in the performance if I use PostgreSQL raw SQL queries using django.db connection cursor over ORM?

Following are the proposed ways for one sample query.

  1. Django ORM

    table_name.objects().all()
    
  2. PostgreSQL raw SQL queries using django.db connection cursor:

    enter image description here

Can someone please suggest which one of the above will lead to a faster increased in performance provided I have my database running on RDS in another server.

Upvotes: 3

Views: 1601

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 476534

Using a raw query will result in close to no performance difference. The ORM indeed uses a few cycles to construct the query, but that is insignificant compared to the work of sending the query, the database receiving, interpreting and running the query, and sending the results back.

In some cases the ORM might indeed make a (over)complicated query, but that is not the case if you fetch all records. It sometimes requires ORM expertise (just like it requires expertise in SQL) to find a query that performs better.

You can furthermore already let the Django ORM do the work for you by using .values() to make it more convenient to construct a DataFrame:

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

Upvotes: 4

Related Questions