我在用网页.py从Oracle创建一个简单的报告页。当我使用vars=传递参数的最佳实践方法时,延迟是11-12秒。当我使用字符串替换执行相同的查询时,查询将在不到一秒钟的时间内运行。我是这样检查的:sql = """
SELECT a, b, c
FROM my_table
WHERE what = $what
ORDER BY a, b"""
print('before', datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))
result = db.query(sql, vars={'what': '1234'})
print('after', datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S'))
“before”和“after”清楚地显示了查询的延迟。我尝试过使用相同vars=的select()并获得相同的延迟。所以,我的初步建议是网络数据库创建延迟的SQL转义函数。我不想传递未经转换的输入,而且似乎不应该有这么多开销。在
还有什么其他因素会造成这种延误吗?如果是逃逸逻辑,有没有什么我需要注意的问题?在
提前谢谢!在
编辑:
在进一步的调查中,我已经(至少对我自己)证明了延迟不是网页.py,但在cx Oracle中发生。我得出这样的结论:修改sql的语法并执行以下操作:
^{pr2}$
…与硬编码变量相比,这会产生10到12秒的延迟。有什么建议吗?在