起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 196|回复: 10

如何提升Query速度**

[复制链接]
发表于 2008-11-5 16:12:04 | 显示全部楼层 |阅读模式
情况如下:
我在做一个大循环(记录可能上万条)时,
在循环内部须用Qeruy查询记录,但频繁的Close和Open操作导致代码执行速度缓慢,有没有什么方法在样的操作下提升速度?

谢谢。
回复

使用道具 举报

发表于 2008-11-5 16:20:50 | 显示全部楼层
用存储过程,不要用客户端程序去处理。
回复 支持 反对

使用道具 举报

发表于 2008-11-5 16:20:54 | 显示全部楼层
为啥要频繁close、open呢?贴出你的代码看看呢
还有在循环的前后加上DisableControls和EnableControls看看速度是否好点,
如果数据不需要展现在界面上,直接在后台执行存储过程吧
回复 支持 反对

使用道具 举报

发表于 2008-11-5 16:21:28 | 显示全部楼层
1、把需要查询的数据预先取到客户端,不要在循环内部反复执行close、open

2、如果方法1在业务上无法实现,建议去服务端编写存储过程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-5 16:48:28 | 显示全部楼层
这样做的原因如下:
1、我是从sm sql读取数据导入到oralce。
2、导数据过程中我要从用户给的名称获取它的编码,所以使用了Query查询。

我是在数据集操作,数据集没有绑定控件,所以不存在DisableControls这样的操作。
回复 支持 反对

使用道具 举报

发表于 2008-11-5 16:51:01 | 显示全部楼层
存储过程可以传入参数的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-5 16:53:35 | 显示全部楼层
但是你从sm sql读取数据导入到oralce还用数据集操作。
回复 支持 反对

使用道具 举报

发表于 2008-11-5 16:56:10 | 显示全部楼层
mssql是可以直接导入数据到Oracle的。

像楼主这种需求(两个服务器间同步数据),尽量在服务端完成,不要通过客户端中转,否则效率太低。
回复 支持 反对

使用道具 举报

发表于 2008-11-5 16:57:14 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-5 17:27:48 | 显示全部楼层
原来可以这样的? 我试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-25 23:38 , Processed in 0.040100 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表