我正在使用Django(Oracle后端,cx_Oracle 5.2.1)执行一个非常简单的查询
select x.y, x.z from x where x.a = 'foo' and x.b = 'bar'
x.a和x.b都被编入索引(db_index = True)
我使用的页面使用Pandas计算各种记录的汇总统计信息,因此数据量非常大。
我有一个页面加载~15000条记录的子集。这需要大约2秒钟才能加载
完全相同的页面,当使用不同的时间帧时,但使用相同类型的查询加载~50000条记录。加载需要约30秒。我已经对性能进行了基准测试,并且Pandas不是瓶颈。
简单
my_queryset.all().values(('y', 'z'))
占绝大部分时间(~90%)
为什么会这样,或以任何方式加速它?
值得注意的是,在数据库控制台中执行这些查询时,它们都非常快。似乎是Django ORM存在问题。