2014-03-13 111 views
2
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; 

什麼是加快查詢的可能方法?它運行很慢優化子串sql查詢

回答

1

where username like '[A-C]%'

將允許在username索引的使用(一個應該存在)而不是通過一個總是阻止它的函數傳遞username

1

沒有太多可以優化,但

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

那麼你可以使用計算

1

我不認爲你可以從你的查詢中獲得很多性能改進。 也許通過刪除子字符串,但這是我能想到的。

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

我添加了一個ZC所以用戶名後開始C也包括