none
大家好,问一个全文索引的问题! RRS feed

  • 问题

  • 问题是这样的,我在数据库上建立了一个全文索引,数据大概有几百万条,按照关键字进行索引,我把它分成了10个目录存放,用下面形式的sql进行查询

    select top 800 t1.MsgID,t1.Title,t1.ClassID,t1.ThisPath,t1.Tel,t1.Address,t1.Url,t1.Rectf,t1.CellPhone,t1.Oicq,t1.Msn from table t1 inner join containstable(table ,fulltext,'ISABOUT (关键字 weight(.9),分词关键字 weight(.2),分词关键字 weight(.2),分词关键字 weight(.8))',800) as t2 on t1.id=t2.[Key] Where t1.Deltf=0 order by t2.rank desc

    但是查询速度非常的慢,每换一个标题查询的速度基本都是超时会是20-30秒

    select field1,field2,field3,field4 from tb where contains(fulltext,'keywords') 这种方式速度也很慢,往往都是第一执行很慢,执行后刷新出现结果倒是挺快的.

    全文索引重建过好几次了,还是这样子,本地有一个50万记录的表,也用同样的办法测试,前几次比较慢,搜索多几次,再搜索速度就很快了,这个问题搞了几天了还没搞定,望大家能给我提示一下,先谢谢了.

     

    2010年7月7日 9:37

全部回复

  • Hi,你看过这个文档吗? http://technet.microsoft.com/zh-cn/library/ms142560.aspx

    如果你的数据库是restore出来的,可以试试先detach再attach它.


    Relate all.
    2010年7月9日 3:23
  • 好的,谢谢 我先试试

    可不可以问下,分离和附加会对数据库有影响吗?

    我把10余个全文全部删除,又创建了一个总的,不再使用带权重的只包含contains(fields,keywords)的方法,发现速度还可以,

    我越来越觉得奇怪了,请大家再帮我一下,再次谢谢了,因为好的搜索对用户体验特别有帮助,所以我很想把它搞好,但是速度一直是问题.

    2010年7月10日 0:12
  • Checked disk i/o? Try put catalog files on separate disk. 

    2010年7月10日 0:37
  • Checked disk i/o? IO的话是返回1200条记录,可能需要3600次IO,物理读取有800次左右

    重复执行也会有物理读取

    Try put catalog files on separate disk 和数据库不在同一磁盘上的

    2010年7月10日 1:08