oracle数据库查询速度,Oracle数据库清理过度减慢查询速度

我在用网页.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秒的延迟。有什么建议吗?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值