select  * from table1 where (biaoti like '%兼%' or neirong like '%兼%') biaoti 是nvarchar
neirong 是ntext这是个站内搜索功能表中数据10万左右,查询非常的慢了 
请问各位大虾 有办法优化吗?

解决方案 »

  1.   

    http://www.microsoft.com/china/msdn/archives/library/dnsql2k/html/sql_fulltextsearch.asp全文检索吧
      

  2.   

    既然是在网页里分页显示,每页检索的时候都是
    select top n * from table1 where (biaoti like '%兼%' or neirong like '%兼%') 
    行了。
    呵呵,纯属歪招。
      

  3.   

    这个语句似乎建索引也没用
    --------------------------
    1:不能在NTEXT类型上建索引
    2:字段 LIKE '%...%这样的语句本身也引用不了索引(即使字段有索引的话),除非是 LIKE '...%'
      

  4.   

    to bwguangselect  count(*) from table1 where (biaoti like '%兼%' or neirong like '%兼%') 就已经很慢了我想知道csdn这样的不是也可搜索么 是怎么做的阿
      

  5.   

    ntext用like搜索肯定很慢。而且索引对like是效果的。现在这样只能是用全文索引了。不过全文索引是需要权限的。一般的虚拟主机不会给这个权限你。
      

  6.   

    先创建全文索引
    然后执行:
    select  * from table1 where contains(biaoti,'"兼"')
    union all
    select  * from table1 where contains(neirong,'"兼"')
      

  7.   

    先创建全文索引
    再把like 换用charindex
    这样会快些
      

  8.   

    是自己的服务器就好办很多了。先用企业管理器建全文索引,具体操作可以上网查询很多的。然后把 biaoti like '%兼%' or neirong like '%兼%' 换成contains(biaoti,'兼') or contains(neirong,'兼') 如果你想查询范围广一点的话,可以用contains(biaoti,'*兼*') or contains(neirong,'*兼*'),*相当like 的 %
      

  9.   

    创建全文索引速度会提升很多,但是SQL的全文也是很糟糕的,尤其分词。
    但是对于楼主的需要建个全文索引已经够用了
      

  10.   

    对于biaoti、neirong2个字段建分词索引字段
    进行全文填充,然后查询即可hxd001_810(寒冬)写的麻烦了
    select * from table1 where contains(*,'"兼"') 就可以
      

  11.   

    不过全文索引查询和like搜索是不一样的,楼主要记得,这个是分词后的索引查询
    并不是所有 有“兼”字的都查询出来,“兼任”这个词语在全文查询中是查不出来的