优化substring sql查询

时间:2014-03-13 15:51:38

标签: sql sql-server

select 
   * from table 
where 
   substring(username,1) >= 'A' 
   and substring(username,1) <= 'C' 
   and height_in_meters * 100 > 140 
   and height_in_meters * 100 < 170; 

加快查询的可能方法是什么?它运行得很慢

3 个答案:

答案 0 :(得分:1)

您可以优化

WHERE  username >= 'A' 
  AND  username < 'D' 
  AND  height_in_meters  > 1.4 
  AND  height_in_meters  < 1.7;

所以你保存计算

答案 1 :(得分:1)

where username like '[A-C]%'

允许在username上使用索引(如果存在),而不是通过一个总是阻止它的函数传递username

答案 2 :(得分:1)

我认为您不会从查询中获得很多性能提升。 也许通过删除子字符串,但这是我能想到的全部。

select 
   * from table 
where 
   username >= 'A' AND username <= 'CZ' 
   and height_in_meters * 100 > 140 
   and height_in_meters * 100 < 170; 

我在Z之后添加了C,因此还包含以C开头的用户名