2012-01-23 23 views
0

分組如果你把一個rtrim放在SELECT中,並且再次放在GROUP BY中,這是效率低下的,因爲它rtriming兩次,一個在select,一個在group by? e.g ....SQL rtrim選擇並按

SELECT 
rtrim(people.FORENAME1)+ ' ' + rtrim(people.SURNAME)AS Full_Name, 

FROM 
my table 

GROUP BY 
rtrim(people.FORENAME1)+ ' ' + rtrim(people.SURNAME) 
+0

我想你可以簡單地避免在GROUP BY子句中進行修剪,並將其留在SELECT語句中,這應該足以使查詢變得可行,按照@ JNK的回答。 (並且不要忘記在'FROM'子句的某個地方包含'people'表) –

回答

3

它可能只執行該功能的一次,但它是低效的,因爲它的非優化搜索。

由於您正在應用函數,因此優化程序無法使用引用這些字段的任何現有索引。它在運行之前不知道函數的結果,所以需要處理表中的每一行。

+0

+1其他參考'SARG' =搜索參數 – Yuck

+4

這意味着...您最好使用VARCHAR( )而不是CHAR()並修剪輸入數據,使您在處理數據時不需要TRIM :) – MatBailie

+0

+1 @Dems - 並在兩個字段中添加索引:) – JNK