楼主的查询使用了大量的like语句 , 而like是根本用不了索引的, 它必须全表扫描。 所以效率非常低。像这种, 建议配置和使用sql server的全文检索来进行数据检索。

解决方案 »

  1.   

    晕,是的,like 是用不到索引 的
      

  2.   

    create procedure sp_test(@id int)
    as
    begin
        declare @s varchar(8000)
        declare @keywords varchar(1000)
        select @keyword=keywords from table1 where id=@id
        
        set @s = 'select id,subject from table2 where keywords like ''%'+replace(@keywords,',','%'' or ''%')+'%'''
        exec(@s)
    end
    go
      

  3.   

    create procedure sp_test(@id int)
    as
    begin
        declare @s varchar(8000)
        declare @keywords varchar(1000)
        select @keyword=keywords from table1 where id=@id
        set @s =  'select id,subject from table2 where keywords like ''%'
                 +replace(@keywords,',','%'' or keywords like ''%')+'%'''
        exec(@s)
    end
    go
      

  4.   

    libin_ftsafe(子陌红尘) 
    我用了你的存贮过程在使用的时候提示说“变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突”,我第一次使用存贮过程,不知道语法对不对
    id=256541
    set rs=server.CreateObject("adodb.recordset")
    sql="exec sp_test "&id
    rs.open sql,conn,1,1我这里的id是直接从数据库中复制过来的,我看了表名和字段名也都正确的