我有一消息发送程序,第一次执行该程序时,判断发送缓冲表是否为空,如果为空,则自动将后台(SQL数据库)信箱表中未读消息提出,放置发送缓冲表中;如果发送缓冲表不为空,则在规定的扫描时间内,自动扫描信箱表和发送缓冲表,如果信箱表中有新的未读消息则将其插入发送缓冲表中,若信箱表中的消息已读,而发送缓冲表中有该条消息,则将发送缓冲表中的该消息清除.
现在的问题是自动扫描信箱表和发送缓冲表的算法,我的想法是:保持一个较高的扫描速度前提下(四五千条记录,1秒-2秒完成),如何组织一个高效率的算法将信箱表和缓冲表关联起来,按照上面的说明对发送缓冲池进行插入和删除操作?
我用记录集实现速度很慢!

解决方案 »

  1.   

    发送缓冲表位于本地,信箱表在远端,两表通过均包含有msgid关键字
    我通过ado的find属性在发送缓冲表的记录集中查找是否有信箱表中的消息存在,速度慢!
      

  2.   

    回复人: flyingscv(zlj) ( ) 信誉:100  2004-04-20 11:10:00  得分:0 
     
     
      (四五千条记录,1秒-2秒完成)应该没问题但删除操作为什么要用扫描完成呢?
      我得意思是结构不合理
    删除操作不应该在扫描部分完成
    应该由发送部分完成
    根据你的实际情况考虑咯
      

  3.   

    用自定义的数据类型数组
    把数据全部读入数组中
    EX:
    Private Type UserType
        flagDelete as Boolean '标志位作为一个有没删除
        ..........
    end Type
    dim arryCache() as UserType
    dim arryDataBase() as UserType
    在UserType中加入标志位