asp.net 中数据库查询速度变得奇慢!

mosane 2008-09-02 07:11:59
环境:
windows 2003
sql server 2005
.net 2.0

现象:
一个在数据库中执行时间不需1秒的存储过程,
到 asp.net 中却要 20 秒,
我尝试过用 SqlDataSource 直接读、用 SqlDataSource 在 CodeFile 中手动读、用 dataReader 通过 SqlHelper 读而不绑定数据,
都是一样的慢。

百思不得其解。
请问您遇过这情况吗?
或赐教会是什么原因?
...全文
313 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
yytt123622 2008-09-05
  • 打赏
  • 举报
回复
楼主你在sql中测试下你的存储过程,如果快的话,证明有可能是在asp.net连接数据库的时候慢!分别测试下!或者写个一般的查询看看在asp.net中速度怎么样!
紫气东来_999 2008-09-05
  • 打赏
  • 举报
回复
第一次运行DEBUG过程会慢点。。。。

编译好,发布到服务器上应该就不会了。。。因为那时候WEB。CONFIG下可以把DEBUG都设置为FALSE
a121984376 2008-09-05
  • 打赏
  • 举报
回复
我觉的也可能是系统的原因····

我就没遇到过···
toxxj 2008-09-05
  • 打赏
  • 举报
回复
同时把你的存储过程也贴出来吧,

你认真分析下你的存储过程,是不是关联了某个记录上W条的表,如果是的,估计问题就出这里了,

另外表与表的关联不要最好只有一层
datahandler2 2008-09-05
  • 打赏
  • 举报
回复
SQL采用存储过程。如果说你有在SQL中执行测试,很快,请先把你的SQL执行缓存去掉
dbcc dropcleanbuffers
dbcc freeproccache
如果SQL中执行快,那注意sqldataReaer不要一次性读取大量数据。另外我个人觉得此时,您应该单步调试进去看看为什么哪个操作这么慢
如果数据不要求实时性高。那可考虑将该数据存入缓存
zhengyh5339 2008-09-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zpcoder 的回复:]

你的系统本身有问题,尤其是IIS
[/Quote]
zpcoder 2008-09-05
  • 打赏
  • 举报
回复

你的系统本身有问题,尤其是IIS
jornchangzheng 2008-09-05
  • 打赏
  • 举报
回复
换台电脑试试
mrsdev 2008-09-05
  • 打赏
  • 举报
回复
分层提取数据吧,用Sql Server Profile监视你的SQL语句执行状况

用可视化工具生成的数据连接和GridView的自带的分页和排序,会导致效率相当低下,是提取全部数据再发的!
mosane 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ojekleen 的回复:]
一个在数据库中执行时间不需1秒的存储过程
和在程序里面执行有很大区别的
不光是asp.net一家的原因
[/Quote]

会有哪些原因呢?
mosane 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ChaoYang0502 的回复:]
引用 7 楼 sq_zhuyi 的回复:
是连接数据库服务器需要的时间长吧
分别测试连接数据库所用时间与读取数据所用时间

另外,最好使用数据库连接池,这种问题数据库连接的问题比较大,可能执行用不了时间,但取得有效的可用的数据库连接需要较长的时间
[/Quote]

谢谢,当然做了这些可能的排除。譬如读取同个数据库里的别的存储过程或表,速度正常。
mosane 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mjjzg 的回复:]
将你的代码贴出来看一下吧,要不清理一下你的缓存,再试
瞧一下你在运行它时是否大量的占用你的内存,如果是的话就是你的代码的问题
[/Quote]

用 SqlDataSource 直接读是在 IDE 中设置,无须代码;

用 dataReader 通过 SqlHelper 读而不绑定数据的代码也很短:
protected void Page_PreRender(object sender, EventArgs e)
{
string SQL = "p_Test";
SqlDataReader dataReader = SqlHelper.ExecuteReader(SqlHelper.ConnStr, CommandType.StoredProcedure, SQL, null);
//作为测试,这里什么都没干
dataReader.Close();
}

如果屏蔽掉这段代码,执行时间为0.00ms。
ChaoYang0502 2008-09-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sq_zhuyi 的回复:]
是连接数据库服务器需要的时间长吧
分别测试连接数据库所用时间与读取数据所用时间
[/Quote]
另外,最好使用数据库连接池,这种问题数据库连接的问题比较大,可能执行用不了时间,但取得有效的可用的数据库连接需要较长的时间
大聪 2008-09-02
  • 打赏
  • 举报
回复
问题可能出在别的地方,找找其它原因吧
路人乙e 2008-09-02
  • 打赏
  • 举报
回复
是连接数据库服务器需要的时间长吧
分别测试连接数据库所用时间与读取数据所用时间
长江 2008-09-02
  • 打赏
  • 举报
回复
你调试一下,在调试到执行语句的地方是否也是很快就执行过去的?
ojekleen 2008-09-02
  • 打赏
  • 举报
回复
一个在数据库中执行时间不需1秒的存储过程
和在程序里面执行有很大区别的
不光是asp.net一家的原因
mjjzg 2008-09-02
  • 打赏
  • 举报
回复
将你的代码贴出来看一下吧,要不清理一下你的缓存,再试
瞧一下你在运行它时是否大量的占用你的内存,如果是的话就是你的代码的问题
simon_c 2008-09-02
  • 打赏
  • 举报
回复
这个....顶了吧
怫悰 2008-09-02
  • 打赏
  • 举报
回复
冒泡帮顶接分

估计还是代码有问题,能不能贴出来看看
加载更多回复(1)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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