我寫了下面的查詢:TRIM功能在SQL Server
select *
from employees
order by (CAST(LTRIM(RTRIM(JoingDate)) AS SMALLDATETIME)) desc
查詢會影響性能。我們是否需要在DateTime
列上使用TRIM
?我們如何重寫上述查詢來提高性能並最大限度地縮短執行時間?我們會用CONVERT
函數代替CAST
嗎?
我寫了下面的查詢:TRIM功能在SQL Server
select *
from employees
order by (CAST(LTRIM(RTRIM(JoingDate)) AS SMALLDATETIME)) desc
查詢會影響性能。我們是否需要在DateTime
列上使用TRIM
?我們如何重寫上述查詢來提高性能並最大限度地縮短執行時間?我們會用CONVERT
函數代替CAST
嗎?
除非我失去了一些東西,你應該只是這樣做:
select *
from employees
order by JoingDate desc
不知道爲什麼你正在你的日期轉換爲字符串,然後返回一個日期。如果你想在日期時間使用smalldatetime,你可以只投射/轉換它,但爲什麼?
select *
from employees
order by CAST(JoingDate AS SMALLDATETIME) desc
可能日期存儲在一些不按時間順序排序的次最佳字符串格式中。 – 2014-10-07 19:45:36
@MartinSmith OP在他的文章中特別提到它是'DATETIME'。也許它並不意味着是字面的。 – Steve 2014-10-07 22:36:02
不,'CONVERT' over'CAST'不會讓你有任何加速。 *(1)**不要選擇**所有列**('SELECT *'),但只能選擇那些你真正需要的**和**(2)**不要選擇**所有行**(通過省略WHERE條款)...... – 2014-10-07 16:03:36
首先擺脫皇家「我們」。這是你的問題。使用「我」,「我」和「我的」。你的JoingDate是什麼樣的? 'CAST'和'CONVERT'幾乎相同,所以不要指望從另一個性能上獲得任何收益。 – 2014-10-07 16:07:28
'ORDER BY'代價高昂,索引會降低代價,但我相信您需要'JoingDate'字段以正確的數據類型才能從索引中獲得任何好處。 – 2014-10-07 16:21:53