継承したいくつかの T-SQL (SQL Server 2008) があり、一部のクエリの実行が非常に遅い理由を見つけようとしています。には、Actual Execution Plan
19%、21%、26% のコストがかかる 3 つのクラスター化インデックス スキャンがあるため、これが問題の原因のようです。
通常、フィールドの内容は数値です (ただし、一部のジョブ番号にはアルファベットのプレフィックスが付いています)。
データベースの設計 (ベンダー提供) はかなり貧弱です。アプリケーションでのジョブ番号の最大長は 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)
2 つの varchar 間で暗黙的な変換を行う理由がわかりません。長さが違うだけなのでしょうか?
私は実行計画にかなり慣れていません
実行計画のどのノードがクエリのどの部分に関連しているかを簡単に把握する方法はありますか? 述語、結合節ですか?
よろしく
マーク