简单的select语句在后台执行很快,前台很慢,为啥?

vbagcl 2018-05-22 01:29:33
一个很简单的select语句,select * from t。
后台执行几秒钟,前台执行要几分钟,为啥?
...全文
1796 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你可以先试试只查询出一条数据显示到前台的时间
  • 打赏
  • 举报
回复
看下t表是不是有很多数据,你在客户端查询 一般只返回前1000条数据,需要点击下一页看后面的数据 如果数据太多,假如返回10万条数据,网络传输需要时间,10万条数据展示在界面上,比如用js拼接html,更耗时。
lovingkiss 2018-05-23
  • 打赏
  • 举报
回复
如果数据量大,网络传输有问题,那就分开,在服务器上负责读取压缩,客户端负责解压填充。。。 不要把数据层和界面层混在一起
Beck_Ham_ 2018-05-23
  • 打赏
  • 举报
回复
楼上说的没错, 之前我做的一个c#项目的分页查询, 也是类似问题, 需要优化cs端的代码
  • 打赏
  • 举报
回复
后台数据库执行查询是直接写SQL查询语句还是使用工具进行查询。 1,如果使用工具查询工具会默认查询前xx条(Navicat 默认是1000条),所以会很快。 2,如果直接写SQL语句查询出全部数据(因为你的查询语句没有条件),也只要几秒,那就需要检查代码或者检查驱动了。 因为数据量大的话前台程序数据传输需要时间(从数据库到你程序),构建DataTable对象存储数据需要时间,这或许是耗时所在。
本人QQ-554433626 2018-05-23
  • 打赏
  • 举报
回复
数据量大的话把OracleDataAdapter换成OleDbDataReader。你这sql没条件,不知道数据多不多,Fill过程较慢比较消耗系统资源。
学习的麋鹿 2018-05-23
  • 打赏
  • 举报
回复
虽然不是很懂你写的是什么,但是如果只是查询,建议需要什么字段就查哪些,尽量不要用Select * From Table的“ * ”,也可以了解一下Linq
Defonds 2018-05-23
  • 打赏
  • 举报
回复
用工具测一下看看慢在哪里
xiaoxiangqing 2018-05-23
  • 打赏
  • 举报
回复
以前我也遇到过,应该是执行计划不一样的问题,现在都不知道是什么原因?
大鱼> 2018-05-22
  • 打赏
  • 举报
回复
这个是可以跟踪的,你进去调试一下,可以很快定位到到底是哪里占用了大量时间,如果只是简单的把数据查询出来,应该不会浪费那么多时间(毕竟你所谓的前端与后端在同一台电脑上面)。
正怒月神 2018-05-22
  • 打赏
  • 举报
回复
网络问题
vbagcl 2018-05-22
  • 打赏
  • 举报
回复
如果是网络问题,那后天和前台在同一台电脑上啊
vbagcl 2018-05-22
  • 打赏
  • 举报
回复
前台C#代码还有能改善的地方吗?
  • 打赏
  • 举报
回复
看看数据量吧 超过1w用非1000M局域网传输就会很慢的。
vbagcl 2018-05-22
  • 打赏
  • 举报
回复
前台的代码如下: OracleDataAdapter da; DataTable dt = new DataTable(); DataSet ds = new DataSet(); string errMsg = ""; bool refOK = false; bool cnnOK = false; OracleConnection orclConnection = DBConnect(ref cnnOK, ref errMsg); OracleCommand oraCommand = null; if (cnnOK) { try { oraCommand = orclConnection.CreateCommand(); oraCommand.Connection = orclConnection; oraCommand.CommandType = CommandType.Text; oraCommand.CommandText = sql; da = new OracleDataAdapter(oraCommand); da.Fill(ds); if (ds.Tables.Count > 0) { dt = ds.Tables[0]; } refOK = true; oraCommand.Dispose(); oraCommand = null; orclConnection.Close(); orclConnection = null; } catch (Exception ex) { refOK = false; errMsg = ex.Message; try { oraCommand.Dispose(); oraCommand = null; } catch { } try { orclConnection.Close(); orclConnection = null; } catch { } } } else { refOK = false; } return dt;
smthgdin_020 2018-05-22
  • 打赏
  • 举报
回复
你用什么数据库?前端发起查询请求之后,在数据库服务器上可以用工具监视一下sql信息,确定执行时间后,如果发现速度不慢,那就是数据库和前端的通讯问题,网络或者数据量大都可能。
debugLQ 2018-05-22
  • 打赏
  • 举报
回复
几分钟, 是不是 你程序里面循环什么的套太多哦
vbagcl 2018-05-22
  • 打赏
  • 举报
回复
前台是C#写的,后台是在toad里执行的
李敢敢 2018-05-22
  • 打赏
  • 举报
回复
看看网速快不快
SoulRed 2018-05-22
  • 打赏
  • 举报
回复
检查你的代码,是不是获取了不需要的东西。 或者你的“前台” 是远程连接。。。 当然比本机操作要慢
加载更多回复(1)

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧