none
优化语句 -你过来看看 RRS feed

  • 问题

  • 今天在SSMS里查询占用了最多的 CPU 累计使用率看到了这条语句
    大家议优化一下这个T-SQL。
    先不考虑索引问题,大家把这几个关键字看看用什么来替代能最好
     
    where CYCLTN<>@ClientID and 
       
    (ltrim(rtrim(CYCAD1))+ltrim(rtrim(CYCAD2))+ltrim(rtrim(CYCAD3)))<>ltrim(rtrim(@Address))  
       
    AND ( (CYHPHE=@Mobile or CYBPHE=@Mobile or CYFPHE=@Mobile) or  
      (CYHPHE=@Phone or CYBPHE=@Phone or CYFPHE=@Phone) 

    举例 上面几个字段大致存储的数据类型。
    CYCLTN 里面的存储数据:0000000003
    CYCAD1: 殷高路,
    CYCAD2: 601室,
    CYCAD3: null  
    CYHPHE: 56083311  
    CYBPHE: 15933262021  
    CYFPHE: 68650016
    2011年4月13日 6:00

答案

  • 有时候 找到没有的 不如找到有的

    你可以先从你业务需要去分析

    避免使用函数,传入值的时候就要把前后空格去掉(这个程序可以做到)。

    预先处理数据库中数据剔除前后空格。

     


    family as water
    • 已标记为答案 Ai-hua Qiu 2011年4月22日 7:10
    2011年4月13日 7:08

全部回复

  • 有时候 找到没有的 不如找到有的

    你可以先从你业务需要去分析

    避免使用函数,传入值的时候就要把前后空格去掉(这个程序可以做到)。

    预先处理数据库中数据剔除前后空格。

     


    family as water
    • 已标记为答案 Ai-hua Qiu 2011年4月22日 7:10
    2011年4月13日 7:08
  • 那我只能迫于无奈了

    2011年4月13日 7:26
  • AND ( (CYHPHE=@Mobile or CYBPHE=@Mobile or CYFPHE=@Mobile) or   
      (CYHPHE=@Phone or CYBPHE=@Phone or CYFPHE=@Phone)  

    将这个条件索引分别加上。。。


    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com
    2011年4月15日 2:09