老铁们有没有遇到过在终端执行 sql 语句非常快,几十几百毫秒级,但是通过程序调用执行非常慢回到几十秒甚至一两百秒
1
Momostudent 2023-09-18 12:27:43 +08:00
遇到过 同样的问题,在 plsql 等工具下面直接 执行也是非常快,在程序中调用非常慢
后来自己自己恢复了、、、、、、 |
2
jmss 2023-09-18 13:03:41 +08:00
还能这么离谱吗,是不是和程序调用的数据库驱动有关,能准确复现吗
|
4
crasa OP @Momostudent 啥也没管就好了?
|
5
matepi 2023-09-18 16:10:32 +08:00 via iPhone
可能是终端和程序调用时上 fetch 条数的默认设定不同导致,终端默认 fetch first 50 或窗口大小可显示条数,导致执行计划和实际开销都优于,程序默认调用全量返回数据的执行计划和实际开销
可以尝试通过程序侧调用执行计划获取一下,比对一下终端都执行计划 最终程序执行上要考虑耗时功能优化翻页等等 |
6
crasa OP @matepi 感谢老铁,不过程序调用也是有分页的,就是同一个分页查询在不同机器的执行效果相差太大。一个是开发机调用 sql (百来毫秒),一个是测试环境机器调用 sql (几十到几百秒)
|
8
matepi 2023-09-18 16:35:02 +08:00
哦,还想起来一个场景,对于一些数字形字符是否有隐式转换为数字,造成对数字可以用上索引之类的。可能在不同的接入客户端模式上也有不同。对应的 preparestatement 或者 orm 框架上,对应的既能数字、也能文字的字段类型,是否正确绑定,用上了索引。
|
10
QZFCANBA 261 天前
老哥找出问题了吗。。我这也有这个问题,datagrip 里 2 300 毫秒,mybatis 里 4 5 秒
|