我有一些我繼承的T-SQL(SQL Server 2008),並試圖找出爲什麼某些查詢運行得非常慢。在Actual Execution Plan
我有三個聚集索引掃描,這些掃描使我花費了19%,21%和26%,所以這似乎是我的問題的根源。2個變種之間的T-SQL隱式轉換
字段的內容通常是數字(但有些作業號有一個字母前綴)
的數據庫設計(供應商)是相當差。在他們的申請中,職位編號的最大長度爲12個字符,但在加入的表格中,在某些地方定義爲varchar(50)
,其他地方定義爲varchar(15)
。我的參數是varchar(12)
,但我得到同樣的事情,如果我將其更改爲varchar(50)
節點包含此:
Predicate: [Live_Costing].[dbo].[TSTrans].[JobNo] as [sts1].[JobNo]=CONVERT_IMPLICIT(varchar(50),[@JobNo],0)
sts1
是派生表,但表中它拉jobno
從一個varchar(50)
我不明白爲什麼它在做兩個varchars之間的隱式轉換。僅僅因爲它們長度不同?
我是相當新的執行計劃
有一種簡單的方法來找出哪些節點在EXEC計劃涉及到查詢的哪一部分? 是謂詞,連接子句?
問候
馬克
[可能是整理不匹配](http://blogs.msdn.com/b/arvindsh/archive/2012/09/18/sql-collation-and-performance.aspx)。看起來不像是你的問題的原因,但轉換髮生在參數而不是列上。 –
發佈TSQL .. – Paparazzi
那麼,給你一個正方形和公平的答案需要一些更多的信息。也許你可以給我們更多關於執行計劃的細節?也許你可以在某處張貼一些圖片或xml文件? –