dbo.GetHeadPy(单位名称) like '%cd%' or 单位名称 like '%cd%'
这里是个难点
根本就没有用上索引。能不慢嘛。

解决方案 »

  1.   

     dbo.GetHeadPy(单位名称) like '%cd%' or 单位名称 like '%cd%'
    这句可以改成
    charindex('cd',dbo.GetHeadPy(单位名称)+','+单位名称)>0 -- 其中的逗号是防止“dbo.GetHeadPy(单位名称)”的最后一个字符和“单位名称”的第一字符组合起来刚好等于cd
      

  2.   


    SELECT top 10 单位名称,单位地址
      from 报告单 
     inner join 单位名称 
        on 报告单.scdwmcid=单位名称.dwmcid
     where 
     bgdid in (select top 10 max(bgdid) as maxbgdid 
         from 报告单 
        inner join 单位名称 on 报告单.scdwmcid=单位名称.dwmcid 
        where dbo.GetHeadPy(单位名称) like '%cd%' 
           or 单位名称 like '%cd%'  --本处可改为union all
        group by 单位名称)
     order by bgdid desc%cd%没法优化,如果cd是某个重要标识的话,那只能说明表设计不合理。另外在优化前建议先只取主要信息,待优化完毕后再连接其他表查询。