【发布时间】:2014-09-25 13:56:49
【问题描述】:
我最近使用 Oracle 后端从 Django1.4 升级到 Django1.7,并注意到以下查询非常慢:
DomainObject.objects.get(some_colume=some_value)
虽然这个打开非常快:
DomainObject.objects.filter(some_colume=some_value)[0]
我已经在 Oracle 企业管理器中进行了分析,不同之处在于驱动程序将第一个查询的绑定变量作为 NVARCHAR2 传递,而第二个查询的绑定变量作为 VARCHAR2 传递。 由于该列是 VARCHAR2,因此第二个查询可以使用已在该列上定义的索引,而第一个查询则不能。
关于为什么 Django 将第一个查询作为 NVARCHAR2 并将第二个查询作为 VARCHAR2 传递的任何想法?
谢谢, 瓦卡
【问题讨论】:
-
我还注意到 Django 将看似完全无用的分页信息添加到“获取”查询中。解决方法是运行: from django.db.models import query query.MAX_GET_RESULTS=1
-
我假设您的意思是“从 Django 1.4 到 Django 1.7”
-
抱歉,是的,你是对的。
标签: python django oracle type-conversion cx-oracle