本人一直使用delphi7+BDE开发数据软件,只是桌面型数据库有2个方面
的缺点使我要转向sql server, 1.安全性 要在局域网使用,必须共享出
数据文件夹, 容易给别人删除,修改. 2.数据一致性,客户机有时死机,会
漏保存记录.  可是现在转向sql server 后反而有更多问题比桌面型还差1. 我使用Table.open打开表操作, 在桌面型数据库下, 速度极快,0.1秒
哪怕10万条记录也是, 可是在ADO的Table或query .open速度明显很慢,
10万记录需要3~5秒, 2.  BDE下改记录是table.setkey; findkey; 找到记录后
table.edit 然后 table['zd']:=????然后.post  然而sql server 不支持
seek搜索, adotable无法用成功.seek;  如果说改用insert table来改,
我可以接受, 可是当我打开一个表,显示到Grid,有许多记录, 用户想定位
某个bh号记录时,不知怎么作, ado.locate速度太慢.   (已经有建索引)
    :::: 有一个商品库,5000记录,客户喜欢打开
浏览,然后更改一些数据, 或者定位某个记录修改数据. sql server 不支持
seek的定位查询(我测试n次) .locate需要1秒时间, 客户很不满意,用什么解决??3. 排序问题, ado打开sql server表下,不能改索引名, 必须关闭后重新打开
,左面数据库没有这个问题, 这样本身sql的打开速度就慢, 如何能快速改变
索引在Grid给用户看呢??
   :::::::我花了2天时间, 比较ado的 cursorlocation, cursortype, 
locktype等对表操作的影响, 现在还记忆有新, sql server 表不支持打
开状态下,改变索引!!!还有while not tbale.eof do ...edit post .next 这样的操作
,sql server 下也是好慢!!!
2个客户机 "同时" 对table.流水号 取号+1 操作时, BDE+桌面数据库 没有问题
sql server表则会被锁定.

解决方案 »

  1.   

    尽量不要取出大量的数据,按需求取,多用QUERY不用table;
    发挥好sql server的优点:能够在数据库中自动处理的,可以用数据库的功能实现。用好存储过程,设置好数据库,优化它。sql server 自带功能较多,尽量用好它,我觉得还是不错的。
      

  2.   

    chenjiong(准程序员:升级中....) ::
       我当然也认为这样, 可是用户习惯原来那种, 他是上帝!!
    现在,最头痛在grid下,不知如何定位他想到的记录, .locate太慢!我把.edit post append都全部改成sql语句, 但是以前的 
      while ... do begin
         .findkey 
        .... 处理.. 
       .next
     end
    这些很不好处理,找不到快的方法代替
      

  3.   

    意见:
    1、不用尽量减少TABLE的用量,改用QUERY。如果还嫌慢还有个更快的。。
    2、QUERY的上传用UpdateSQL来实现,相当快且灵活。
    3、储存过程的运行是最快的,多多借助。
    4、如果追求FINDKEY的速度,有个办法是把SQL查询结果暂时转换到本地临时库。我上个程序就是这么搞的。
    5、循环可以用编程+SQL联合运行的方法来解决。