Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 327
Mahesh Avatar asked Aug 24 '26 05:08

Mahesh


1 Answers

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())
like image 98
Willem Van Onsem Avatar answered Aug 25 '26 20:08

Willem Van Onsem



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!