【问题标题】:PgAdmin Queries fast but Django orm query very slowPgAdmin 查询很快但 Django orm 查询很慢
【发布时间】: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


【解决方案1】:

@NicoGriffioen 感谢您提供的信息,我按照这种方式解决了我的问题

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 2021-02-19
    • 2011-12-06
    • 2019-06-27
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多