有一个文章表(id title url body...等)
网址列 url: nvarchar(200), 建了唯一 、非聚集索引
body:ntext现在总数据量180w,对url列进行模糊查询  select top 1 Url from [tb] where Url like '%dadas%' 。耗时11秒
  
求解决方法

解决方案 »

  1.   

    like '%xxx%'是无法利用索引了
    只能通过其他条件先缩小范围了
      

  2.   

    1、like '%dadas%'丢失索引。如果要改进,用全文索引
    2、nvarchar这些大类型对索引的性能依赖不强,很难有什么提升。综上所述:用全文索引
      

  3.   

    是否利用索引和你的selectivity有关,和用不用like无关
      

  4.   

    uncertainty
    如果like百分号在前面就用不了索引,如果like百分号不在前面,會根據你的selectivity[选择率 = (唯一索引值的个数)/ (表中所有行数)],再做選擇是否用索引.
      

  5.   

    从设计角度避免使用 like '%abc%'的形式
    即使要模糊查找,至少也应该是 like 'abc%'