【发布时间】:2022-11-18 23:53:11
【问题描述】:
当我通过 pgAdmin 编写查询时,我得到的结果非常快,但是使用 Django orm 进行的查询非常繁重,可能是什么原因?
数据库连接如下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'user',
'USER': 'users',
'PASSWORD': 'root',
'HOST': '127.0.0.1',
'PORT': '5432',
},
'data': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'data',
'USER': 'datas',
'PASSWORD': 'toor',
'HOST': '192.168.1.1',
'PORT': '5432',
},
}
我用 pgAdmin 发送的查询
PgAdmin 97 msec
SELECT COUNT(id) as noti
FROM notification
WHERE created_at BETWEEN '2022-11-15 00:00:00' AND '2022-11-15 23:59:59'
我用 django 发送的查询
Django 20.44 s
from django.utils.timezone import get_current_timezone
from datetime import datetime
get_today = datetime.now(tz=get_current_timezone())
Notification.objects.using('data').filter(created_at__year=get_today.year, created_at__month=get_today.month, created_at__day=get_today.day).count()
我正在与 Django 建立多个数据库连接,第二个数据库正在运行非常繁重的查询我该如何解决这个问题
【问题讨论】:
-
很难说到底发生了什么。您可以启用 SQL 日志记录以获取有关幕后情况的更多信息:neilwithdata.com/django-sql-logging
-
为什么不直接使用 created_at=todays_date?这只会限制您从中午 12 点到下一个晚上 11:59 的查询?
标签: django django-orm