1.用存储过程,把负担加载在服务器上。
2.在TmpFlag 上设置索引

解决方案 »

  1.   

    vb是不支持多线程的如果是VB。NET的话,有办法。
      

  2.   

    做一个.exe把删除代码加到里面在你原来的程序里面shell一下。
      

  3.   

    做一个.exe把删除代码加到里面在你原来的程序里面shell一下。-----------------------
    这样的话,我能不能和.exe通信,得到它删除了多少了?好显示在进度条里?
      

  4.   

    1.用存储过程,把负担加载在服务器上。
    ---------------------------------
    还是一样,在VB中,还是要等待这条语句运行成功后才能进行下一步操作的。--------------------------
    是的另一个解决方案是,把你要执行的语句写到一个表中,另建一个作业,定时扫描这个表,发现有新写入的记录,就执行记录里的你那条SQL语句(要用到exec 来执行了),这样,你每次操作就相当于只是一个写一条记录的写表操作,对程序就没影响了,这就真正实现了把负担组数据库了
      

  5.   

    楼主
    我建议你在日期字段上加一个索引。
    然后再删除,几秒钟肯定可以搞定。
    直接在flag创建索引是大忌。
      

  6.   

    我建议你重新建一个与该表相同的表,只允许“TmpFlag=1的记录”些入该表,用with check option,然后将两个表union为一个表即可。
      

  7.   

    TO:irvine007(┣━┫Rvine) 
    问一个很弱的问题, 
    1 为什么在flag创建索引是大忌。
    2 在日期字段上加一个索引。然后再删除,这样操作的目的是什么,如果有索引优化计划的话,会不会对这样的操作有影响
      

  8.   

    1 为什么在flag创建索引是大忌。
    因为你这个字段上只有两种值0和1,这种情况下,flag=0或1的记录数一般都会较多,查询定位是很可能不会用到该索引,而且在插入、更新、删除时产生维护索引的额外动作,这点是很得不偿失。
      

  9.   

    日期上面建索引?日期能决定是不是删除么?现在lz的意思是flag来决定删除吧你要在vb里面显示进度条,建议把删除操作分成若干步来做。例如每次删除100条,具体怎么实现你自己看着办咯。譬如先把这30000条记录的pk放到临时表里面去,然后调用存储过程每次删除100条,或者用其他方法。
      

  10.   

    感谢各位的回复,不过这里关键是那没有响应的2分钟。各位没遇到过这种问题吗?比较做个查询。
    rs.open "select * from table1",,,,这个查询比较费时间的话,那这条语句就会执行很长时间才能返回。其间就是没响应的。大家写的程序,像大数据量的时候,都是保证几秒钟内就返回结果吗?
      

  11.   

    另外,这个表有4个字段的复合主键(其中一个字段为时间),总共有20几个字段。
    建立了主键,应该就有聚集索引了吧?我在查询分析器里,执行查询的话,(时间='2005-03-17 12:12:12'),需要2分30秒左右返回结果。服务器是HP的,3.06G,1G内存。Win2000 Server + SQL Server 2000。这么长的时间正常吗?
      

  12.   

    1,用vb调用api实现多线程,实现界面线程和实际操作的分离。
    2, 用vb生成一个.bat的批处理文件,批处理里用isql的批量语句来实现你要的功能,程序里执行bat就可以了,不会影响到界面。
      

  13.   

    我是初学者,所以我说的可能不准确。你在乎的是那两分钟,有人会对数据库进行操作,数据库没有响应造成不必要的麻烦,是吧!
    huailairen(流浪猫) ( ) 信誉:100 
    1,用vb调用api实现多线程,实现界面线程和实际操作的分离。
    2, 用vb生成一个.bat的批处理文件,批处理里用isql的批量语句来实现你要的功能,程序里执行bat就可以了,不会影响到界面。不知道这个行不行?trisum8888(宝宝) ( ) 信誉:100 
    我建议你重新建一个与该表相同的表,只允许“TmpFlag=1的记录”些入该表,用with check option,然后将两个表union为一个表即可。
    宝宝的这个方法,我觉得可行。
      

  14.   

    你可以使用一个循环
    算法,具体VB使用忘记了for i=1 to 300 do
    begin
        每次删除100条  
        响应系统其他
        进度条+1
    end
      

  15.   

    TO: Eilien(我要成长,我正在成长,)  不是数据库没响应,是程序界面没响应。看样子只能像 huailairen(流浪猫) 说的那样,从别的角度来解决这个问题了。