Reputation: 1333
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.
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
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