一个数据库查询问题, 不稳定的效率,有时很快,有时死掉

ddouble 2004-04-19 12:22:17
我用 Delphi 连 ASA 9.0.1 ( SQL Anywhere 9.0.1 ) 做一个项目

使用 Delphi 的 ADODataSet 组件, 查出来显示到 DBGrid 里
SQL语句有些复杂, 欠套,子查询,连接搞了三四层, 在 ISQL 里查很迅速, 两秒就出来了, 在程序里查询的话也很快, 这很可能说明数据库结构设计没什么问题, 但问题是
我在这个 SQL 语句里把几个值用参数替换了, 想在程序中用传递参数查询, 程序大概是这样

DataSet.Close;
DataSet.Parameters.ParamByName('...').Value := ...
DataSet.Parameters.ParamByName('...').Value := ...
DataSet.Open;

我用一个下拉框放了很多值,每次选择一个不同的值就传递一组不同的参数给 DataSet (也就是执行上面这段代码) , 每次程序启动后第一次可以很快出来, 以后就有时可以出来,有时不能出来也不报错, cpu占用率 100%, 似乎在很辛苦的查.

实际上每次的数据量也不大,最多也就几百条而已,只是整个SQL语句相对复杂.

后来我跟踪上面那段代码, 发现如果我每句话停留的时间稍长, 则每次 DataSet.Open 都可以完成, 但是如果我很快的跟踪过去则 DataSet.Open 这句话就死掉了, 开始狂占 cpu

先后换了 oledb, odbc 的方式连接, odbc设置里也勾了对 Delphi 应用程序优化都是一样的效果,也用 dbeng 和 dbsrv 都试过, 都一样效果.

换用 access 就没这个问题

恳请高手赐教... 先行谢过

怀疑是不是和数据库页面大小有关,没试过
会不会是我的 SQL Anywhere 的版本不对, 我是在网上下的9.0, 然后在anywhere网站上更新了9.0.1, 这个版本启动 dbeng9 后没有提示任何demo或学习版的信息, 似乎就是正式的

...全文
57 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddouble 2004-04-20
  • 打赏
  • 举报
回复
已解决,优化查询即可,多用连接
jlwei888 2004-04-20
  • 打赏
  • 举报
回复
调试一下
klbt 2004-04-19
  • 打赏
  • 举报
回复
关注,帮你up

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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