select * from tb where charindex('关键字',title)>0 or charindex('关键字',content)>0我想对新闻表中的   标题字段和内容字段进行关键字搜索  但按上面这样写 速度实太慢  网页显示需要很长时间请问有什么办法优化?

解决方案 »

  1.   

    charindex 是用不到索引的,所以还是看看能不能用其他语句来代替!
      

  2.   

    CHARINDEX是函数 加索引无效可以用全文索引的 CONTAINS来查询
      

  3.   

    --sql2000个人版安装时选择自定义,把全文索引选上;再装sp4补丁
    use pubs   --打开数据库 
    go 
    --检查数据库pubs是否支持全文索引,如果不支持 
    --则使用sp_fulltext_database   打开该功能 
    if(select   databaseproperty('pubs','isfulltextenabled'))=0   
        execute   sp_fulltext_database   'enable' --建立全文目录FT_PUBS 
    execute   sp_fulltext_catalog   'FT_pubs','create' --为title表建立全文索引数据元 
    execute   sp_fulltext_table   'titles','create','FT_pubs','UPKCL_titleidind' --设置全文索引列名 
    execute   sp_fulltext_column   'titles','title','add' 
    execute   sp_fulltext_column   'titles','notes','add' --建立全文索引 
    --activate,是激活表的全文检索能力,也就是在全文目录中注册该表 
    execute   sp_fulltext_table   'titles','activate' --填充全文索引目录 
    execute   sp_fulltext_catalog   'FT_pubs','start_full' 
    go --检查全文目录填充情况 
    While   fulltextcatalogproperty('FT_pubs','populateStatus') <> 0 
    begin --如果全文目录正处于填充状态,则等待30秒后再检测一次 
    waitfor   delay   '0:0:30' 
    end --全文目录填充完成后,即可使用全文目录检索 select   *
    from titles
    where   CONTAINS(title,'database') 
    or   CONTAINS(title,'computer') 
    or   CONTAINS(notes,'database') 
    or   CONTAINS(notes,'database')