设定TADOQuery的两个属性
CusorLoacation := clUseServer; //服务器游标
CacheSize := 100; //本地缓冲大小
我用100000条在sql server上做了测试,使用默认的客户端游标,缓冲为1,执行时间为160多秒,
使用服务器端游标,执行时间为0.35秒;
使用服务器端游标,本地缓冲设为100,执行时间为0.23秒。
CusorLoacation := clUseServer; //服务器游标
CacheSize := 100; //本地缓冲大小
我用100000条在sql server上做了测试,使用默认的客户端游标,缓冲为1,执行时间为160多秒,
使用服务器端游标,执行时间为0.35秒;
使用服务器端游标,本地缓冲设为100,执行时间为0.23秒。
使用服务器游标的好处是大规模操作速度超快,但在实践中有很大的缺陷:
1. 当客户端连接数比较多时,耗费服务器资源非常明显,除非你内存够大,否则不要轻易使用
2. 稳定性问题,因为游标在服务器端,当连接出问题,客户端并不知道,会仍然试着去读取数据,会抛出object closed异常。对于常驻程序,由于这个讨厌的异常对话框不能被捕捉,会导致程序挂死。
所以,正常情况下使用客户端游标,对特殊的大数据处理程序可以尝试使用服务器端游标提高效率。