首页 新闻 会员 周边 捐助

c#连接Oracle数据库,使用甲方提供的视图查询,查询时间50秒!!!怎么解决提速?

0
悬赏园豆:100 [已解决问题] 解决于 2020-12-31 16:48


问题补充:

数据库内查询速度正常,几秒就ok

CodePanda的主页 CodePanda | 初学一级 | 园豆:13
提问于:2020-12-23 20:01
< >
分享
最佳答案
0

慢的原因有多种可能:

  1. 网络不稳定
  2. 视图本身的问题,比如表设计不合理,该用索引的地方没建索引,或查询中索引使用不正确

你可以使用视图sql在oracle客户端查询看看,分解sql语句逐个进行分析

收获园豆:60
E行者 | 小虾三级 |园豆:1811 | 2020-12-24 08:22

在oracle客户端中正常,查询时间很快

CodePanda | 园豆:13 (初学一级) | 2020-12-24 08:56
其他回答(4)
0

如果你只是取一条就直接写SQL返回一条就好了,若你要取全部的话基本没什么优化的余地了,另代码写的太烂了,DateTime可以直接相减的而且转为数字相减秒数不正确时间是60精制的,连接也不打算关,DataTable不需要New

56180825 | 园豆:1749 (小虾三级) | 2020-12-23 20:55

谢谢批评,我会改进的。
您说的取一条就返回一条,可查询出来的结果就只有一条。
没优化的余地了吗。。。快的时候十几秒,慢的时候六七八十秒,诶

支持(0) 反对(0) CodePanda | 园豆:13 (初学一级) | 2020-12-23 21:15

@CodePanda: 我已经说了,是你的时间计算不准确,可能其实没那么长时间, 比如时间12:50-13:01本质上差11秒,但转成数字后51秒,你自己考虑下吧。

支持(0) 反对(0) 56180825 | 园豆:1749 (小虾三级) | 2020-12-25 19:17

@56180825: 我换stopwatch计时吧,还是很久,就算我人工数,也是二三十秒

支持(0) 反对(0) CodePanda | 园豆:13 (初学一级) | 2020-12-26 10:41
0

C# 查询 数据库到内存,一般分3步,
连接数据库,执行查询语句,加载到内存
写个测试程序,每个步骤单独执行100次记录耗时,取平均值,就知道哪里出问题。

geass.. | 园豆:1821 (小虾三级) | 2020-12-24 10:46

查询语句中 da.fill(dt) 填充这步需要40秒上下,其他步骤正常...

支持(0) 反对(0) CodePanda | 园豆:13 (初学一级) | 2020-12-24 10:50

@CodePanda: 加载10万数据都没有这么久。有多少行,多少列。或者是你的电脑配置太低了。

支持(0) 反对(0) geass.. | 园豆:1821 (小虾三级) | 2020-12-24 10:53

@geass..: 查询结果就一条。。其他sql语句查询出来装填也是秒回,就这条语句不行

支持(0) 反对(0) CodePanda | 园豆:13 (初学一级) | 2020-12-24 10:57
0

你一次取多少啊?取多了当然会慢。如果取很少还是很慢,那就看看是不是网络问题,如果不是,就问问提供方吧

收获园豆:40
会长 | 园豆:12463 (专家六级) | 2020-12-26 09:35

查询出来就几条数据,也就取这几条。提供方给了三个视图,我count(1)了一下,a视图一共36w条数据,b视图488w条,c视图233w条,为啥b和c视图能在0.02秒内返回结果,而a却要40秒之久呢。我觉得应该不是我代码问题,而是提供方数据库a视图所在的表没做好优化。是这样吗?

支持(0) 反对(0) CodePanda | 园豆:13 (初学一级) | 2020-12-26 10:36

@CodePanda: 像。每次都取这怎么多?可不可以在本地缓存,每次取得时候只去本地没有的

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2020-12-26 10:57

@会长:36w对比488w、233w来说 ,已经很少了吧

支持(0) 反对(0) CodePanda | 园豆:13 (初学一级) | 2020-12-26 11:00
0

公司的商业项目的话那么接盘侠就安逸咯

Jonny-Xhl | 园豆:691 (小虾三级) | 2020-12-26 17:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册