我用 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或学习版的信息, 似乎就是正式的
解决方案 »
- 关于combobox change事件发生后光标的位置的问题
- 强大的表格组件,自由界面和报表的完美解决方案。
- 用delphi的 TMediaPlayer 怎样实现慢放,快放功能,可以吗?
- 菜鸟问题:如何新打开一个窗体
- 通过ODBC C API 访问Sql SERVER数据库问题,不想通过odbc数据源名称来访问
- 如何清空TStringGrid?
- 急!请各位做过路过的各位大侠帮帮忙,小女子delphi想问下数据库多对多表建立的问题?
- 怎么计算查询到的数据总量?
- 如何循环调用word模板,急!!高分
- memo和RICHEDIT无法显示的文本文件????????是MEMO和RICHEDIT的BUG吗?
- COM+在NT上注册问题
- 请问如何在程序中调用文件自身关联的程序打开该文件?如word文件用word打开。
mysql之所以那么流行,就是因为它小巧,运行速度快!并不进行太多的约束性检查。你的数据库是否也一样呢?有什么优缺点?
试试当数据量比较大时,各种不同数据库的差别?另外,建议关注一下sql anywhere是否也需要打什么补丁?