2014-10-07 123 views
0

我寫了下面的查詢:TRIM功能在SQL Server

select * 
from employees 
order by (CAST(LTRIM(RTRIM(JoingDate)) AS SMALLDATETIME)) desc 

查詢會影響性能。我們是否需要在DateTime列上使用TRIM?我們如何重寫上述查詢來提高性能並最大限度地縮短執行時間?我們會用CONVERT函數代替CAST嗎?

+3

不,'CONVERT' over'CAST'不會讓你有任何加速。 *(1)**不要選擇**所有列**('SELECT *'),但只能選擇那些你真正需要的**和**(2)**不要選擇**所有行**(通過省略WHERE條款)...... – 2014-10-07 16:03:36

+0

首先擺脫皇家「我們」。這是你的問題。使用「我」,「我」和「我的」。你的JoingDate是什麼樣的? 'CAST'和'CONVERT'幾乎相同,所以不要指望從另一個性能上獲得任何收益。 – 2014-10-07 16:07:28

+1

'ORDER BY'代價高昂,索引會降低代價,但我相信您需要'JoingDate'字段以正確的數據類型才能從索引中獲得任何好處。 – 2014-10-07 16:21:53

回答

0

除非我失去了一些東西,你應該只是這樣做:

select * 
from employees 
order by JoingDate desc 

不知道爲什麼你正在你的日期轉換爲字符串,然後返回一個日期。如果你想在日期時間使用smalldatetime,你可以只投射/轉換它,但爲什麼?

select * 
from employees 
order by CAST(JoingDate AS SMALLDATETIME) desc 
+0

可能日期存儲在一些不按時間順序排序的次最佳字符串格式中。 – 2014-10-07 19:45:36

+0

@MartinSmith OP在他的文章中特別提到它是'DATETIME'。也許它並不意味着是字面的。 – Steve 2014-10-07 22:36:02