在 tblKeywords 表上有聚集索引吗?如果没有加上,肯定会提高性能的

解决方案 »

  1.   

    tjan(安安)有的,但是还是慢,关键是tblKeywords有好几千条记录,只是去匹配tblDoc中的某几条记录。还有可能跟统计关键字出现的次数的算法有关,如果字段中出现关键字的次数比较多的话,执行时间肯定会很慢。
      

  2.   

    哈哈!索引最忌讳varchar了!你还用变长型!!!
    楼主把具体需求写出嘛!
      

  3.   

    以下是存储过程的部分代码:set @rstDocStorage=cursor scroll dynamic optimistic for
      select Title
        from tblDocStorage where RootID=@intRootID
    open @rstDocStorageset @rstKeywords=cursor scroll dynamic optimistic for
      select distinct Keyword from tblKeywords  
      order by Keyword
    open @rstKeywords
    fetch first from @rstKeywords  into @strKeywordwhile(@@FETCH_STATUS=0)
    begin
      fetch first from @rstDocStorage  
      into  @strTitle
    while(@@FETCH_STATUS=0)
    begin
        /*search,统计关键字出现次数*/
                 WHILE LEN(@strTitle) > 0
          BEGIN
    SET @intIndex = CHARINDEX(@strKeyword,@strTitle)
    if (@intIndex!=0)
    begin
      set @intSearchStart=@intIndex+Len(@strKeyword)
      SET @strTemp = Right(@strTitle,@intSearchStart)
      set @intWordFrequenyNum=@intWordFrequenyNum+1
    end
    else
      break
         END
         fetch next from @rstDocStorage  into @strTitle
             end
      fetch next from @rstKeywords  into @strKeyword
    end
      

  4.   

    john_1980(Sun)
    存储过程里面有叫连接的吗?好像ado里面才有吧
      

  5.   

    nielisheng(阿土)
      建个全文索引这个也试过,没有明显改善
      
     
      

  6.   

    set @rstKeywords=cursor scroll dynamic optimistic for
      select distinct Keyword from tblKeywords  
      order by Keyword
    改为
    set @rstKeywords=cursor scroll dynamic optimistic for
      select distinct Keyword from tblKeywords,tblDocStorage where   tblKeywords.Keyword like '%'+tblDocStorage.Title+'%'   
      order by Keyword
    这样不出现在tblDocStorage.Title的Keyword便不会被插入游标里,@rstKeywords的记录数就没有几千条了。
      

  7.   

    tblKeywords,tblDocStorage中用了全角逗号了改为tblKeywords,blDocStorage
      

  8.   

    weixxxp(想一想) 我明白了你的意思,但是你好像弄反了,是tblDocStorage.Title字符串中包含tblKeywords.Keyword
      

  9.   

    还有,如果用charindex效率会不会比用like高一点呢?
      

  10.   

    不好意思,写反了
    tblKeywords.Keyword like '%'+tblDocStorage.Title+'%'
    改为
    tblDocStorage.Title like '%'+ tblKeywords.Keyword +'%'
    可以吗?
      

  11.   

    我想关键是你的游标@rstKeywords记录数太多了
      

  12.   

    like比charindex快些,但是like只是判断存在与否,不能得到关键字的出现次数,更不能返回index