我正在尋找一種可能更快的方法來進行此檢查:
NOT LIKE '%[^0-9]%'
這會檢查以確保所有字符都是數字(參見T-SQL 模式的描述)
在 Microsoft SQL Server (T-SQL) 中是否有更快的方法來執行此操作?
完整的背景關系是 Varly large 查詢的 select 部分中 CASE/WHEN 陳述句的一部分:
Select DATEADD(dd, CAST(CASE WHEN a.dateDuration NOT LIKE '%[^0-9]%' THEN a.Duration ELSE 1 END AS INT), a.StartDate) AS 'ourEndDate'
在上面,a 是一個表別名。a.dateDuration 列是可為空的 varchar 列。(出于專有原因,物體的真實名稱已被替換)。
事實上,這種變體在各種“UNION ALL”運算子中重復出現,所以如果它可以做得更快,它可以大大加快查詢速度。
NOT LIKE操作員可能相對較慢。
底層資料庫的版本是 SQL Server 2012。
uj5u.com熱心網友回復:
在這種情況下,LIKE / NOT LIKE 運算子的性能幾乎可以肯定不是問題。如果您的查詢速度很慢,請首先考慮您回傳的行數,以及您是否正在對表進行全面掃描以查找有趣的行。
在這里,您似乎只是在嘗試格式化/調整最終結果 - 如果您認為 SQL 在這里太慢,您可以在應用程式服務器端進行此處理,因為這不是從磁盤獲取資料的一部分。
如果這是子查詢,請顯示整個查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/454828.html
