比如:CustID字段中,该字段按某种规律生成,但某些已被删除。
    CustID
    HK00001
    HK00002
    HK00003
       .
       .
       .
    HK01001
    HK01002
    HK01004
       .
       .
       .
其中缺了HK01003这个,现在想找出HK01001这个值,也就是第一个断点的之前的值。
实现这个功能不难,但如果数据有好几十万的时候,如何确保速度。

解决方案 »

  1.   

    应该是:
    其中缺了HK01003这个,现在想找出HK01002这个值,也就是第一个断点的之前的值。
    实现这个功能不难,但如果数据有好几十万的时候,如何确保速度。
      

  2.   

    用存储过程最优化了,用游标遍历表一下
    具体思路:
    current ID-previous ID>1 则返回previous ID
      

  3.   

    如果这种情况:
    HK00998
    HK01002你是不是要找出其中:
    HK00999
    HK01000
    HK01002还是得到一个逻辑值?
      

  4.   

    要找出第一个出现断点的前一个值。
        CustID
        HK00001
        HK00002
        HK00003
           .
           .
           .
        HK01001
        HK01002  //第一个断点
        HK01004
           .
           .
           .
        HK01101
        HK01102  //第二个断点
        HK01104我只要找出HK01002这个值就可以了。
      

  5.   

    根据要找的值进行二分查找。第一次找第(RecordCount/2)个位置,如果比要找的值小,则找(RecordCount/2+RecordCount)/2......只到找到两个数,一个小于要找的数,一个大于要找的数
      

  6.   

    正如楼上所说,
    用二分法是最快的了,出现  (RecordCount)< Right(CustID,5)
    说明有缺位第一次找第(RecordCount/2) 的位置
    (RecordCount/2)= Right(CustID,5) 
      则说明缺位在后半个部分,
      取(RecordCount/2+RecordCount)/2 继续比较
    (RecordCount/2)< Right(CustID,5) 
      则说明缺位在前半个部分在确定位置后可补上这个缺位,然后继续比较(RecordCount/2)
    直到(RecordCount)= Right(CustID,5)