其中的Keyword_en有6万条数据.
gmpccmap 有20万条数据
gmpcategory 有1万条数据.
用sql server query analyzer 只要3分钟就可以了.
用job就要差不多两个小时.
做过初步的测试.
如果不要下面这句
update Keyword_en set keyword=convert(varchar(1000),' ' + KEYWORD +  isnull(@keyword,' '))  where catalog_id=@catalog_id
用job也只需要4分钟就可以了.

解决方案 »

  1.   

    TRY AGAIN:
    好像不用游标也可以,你在试试.
    CREATE PROCEDURE [update_keyword_en] 
    ASSET NOCOUNT ONdeclare @check int 
    declare @rs_count int
    declare @rs_list int
    declare @rs_list1 int
    declare @catalog_id varchar(15)
    declare @CATEGORY_NAME varchar(100)
    declare @keyword varchar(1000)
    declare cs_catalogid scroll cursor  for select catalog_id from Keyword_en  
    open cs_catalogid
    fetch next from cs_catalogid into @catalog_id
    while @@fetch_status=0
    Begin
       set @keyword=''
       Declare cs_categoryname Scroll Cursor 
        For 
        select distinct CATEGORY_NAME from gmpccmap as a,gmpcategory as b where a.category_id=b.category_id and a.catalog_id=@catalog_id and b.lang_code='iso8859-1'
        Open cs_categoryname    
        fetch next from cs_categoryname into @CATEGORY_NAME
             while @@fetch_status =0
               begin
               set @keyword=@keyword + @CATEGORY_NAME + ' '
               fetch next from cs_categoryname into @CATEGORY_NAME
               END
       update Keyword_en set keyword=convert(varchar(1000),' ' + KEYWORD +  isnull(@keyword,' '))  where catalog_id=@catalog_id

        Close cs_categoryname
       Deallocate cs_categoryname
       fetch next from cs_catalogid into @catalog_idEND
    close cs_catalogid
    deallocate cs_catalogid