救急!三层架构连接数据库时快时慢(要等好几分钟)(100分)

  • 主题发起人 主题发起人 newlkf
  • 开始时间 开始时间
N

newlkf

Unregistered / Unconfirmed
GUEST, unregistred user!
一个三层架构应用,服务端连接到SQL Server.
客户端取数据时,有时速度快(2-3秒),
有时速度很慢。(要好几分钟)---这是在同一个地方反复执行。
数据量大概为1000条记录。
请各位大侠参谋参谋。.........
 
跟踪SQL Server 的语句执行情况,发现在调
sp_indexes_rowset,和sp_primary_keys_rowset 时很慢。
 
你的连接是不是时开时闭?
 
DataBase的KeepConnection=true;
 
每次连接我都是先Close(),再用Open().
服务端使用ADOConnection连接数据库。程序中没有用到DataBase.
客户端执行如下Sql语句:Select * from tbBooks
发现SQL Server自动调用sp_indexes_rowset,和sp_primary_keys_rowset .
此时速度非常的慢。
 
用如下sql语句测试:
Select cCode from tbStocks
Group By cCode
Order By cCode.

跟踪Sql Server上执行情况,使用Query时为:
+SQL:BatchStarting SELECT ccode FROM tbStocks GROUP BY cCode ORDER BY ccode NEWLKF sa 2976 16 20:32:41.483
+SQL:StmtStarting SELECT ccode FROM tbStocks GROUP BY cCode ORDER BY ccode NEWLKF sa 0 2976 16 20:32:41.497
Select NEWLKF sa 0 2976 16 20:32:41.497

使用ADOQuery时,为:

+RPC:Starting sp_prepare @P1 output, NULL, N'SELECT * FROM tbStocks', 1 select @P1 Enterprise Suite NEWLKF sa 3009 24 20:18:05.717
+RPC:Completed sp_prepare @P1 output, NULL, N'SELECT * FROM tbStocks', 1 select @P1 Enterprise Suite NEWLKF sa 0 0 0 0 3009 24 20:18:05.717
+RPC:Starting sp_primary_keys_rowset N'tbStocks', NULL Enterprise Suite NEWLKF sa 3010 24 20:18:05.733
Select Enterprise Suite NEWLKF sa 0 3010 24 20:18:05.733
+RPC:Completed sp_primary_keys_rowset N'tbStocks', NULL Enterprise Suite NEWLKF sa 0 33 0 0 3010 24 20:18:05.733
+RPC:Starting sp_indexes_rowset N'tbStocks', NULL, NULL Enterprise Suite NEWLKF sa 3011 24 20:18:05.763
Select Enterprise Suite NEWLKF sa 0 3011 24 20:18:05.763
+RPC:Completed sp_indexes_rowset N'tbStocks', NULL, NULL Enterprise Suite NEWLKF sa 0 118 0 0 3011 24 20:18:05.763
+RPC:Completed sp_execute 3 Enterprise Suite NEWLKF sa 16 10 0 203 2981 23 20:18:05.687


其中ADOQuery执行效率大大的下降。也不知:sp_indexes_rowset 和 sp_primary_keys_rowset
是干啥子用的。(帮助上找不道)

以上请各路大侠参谋参谋..............
 
我 用存储过程解决了问题。大概问题是出在ADOQuery的本身上。
 
最好不要用ADOQuery,要用就用TQuery
 
见者有分,呵呵....
 
后退
顶部