これはストアドプロシージャ内にあります。これはif文です。 @AsOfDateは、の日付データ型に渡されます。私が持っている質問はなぜ最も内側に存在するものを削除してより良いパフォーマンスを得るのですか?文全体がIF EXISTSにあるときのみですか?内部存在チェックでIF EXISTSを使用すると疑わしいパフォーマンスが発生する
二つのテーブル:
- dbo.TXXX_InventoryDetail - 日までの13億records..stats
- dbo.TXXX_InventoryFull - 日までの980万records..stats
声明:io出力
if exists (select 1
from dbo.TXXX_InventoryDetail o
where exists (select 1
from dbo.TXXX_InventoryFull i
where i.C001_AsOfDate= o.C001_AsOfDate
and i.C001_ProductID=o.C001_ProductID
and i.C001_StoreNumber=o.C001_StoreNumber
and [email protected]
and (i.C001_LastModelDate!=o.C001_LastModelDate
or o.C001_InventoryQty!=o.C001_InventoryQty
or i.C001_OnOrderQty!=o.C001_OnOrderQty
or i.C001_TBOQty!=o.C001_TBOQty
or i.C001_ModelQty!=o.C001_ModelQty
or i.C001_TBOAdjustQty!=o.C001_TBOAdjustQty
or i.C001_ReturnQtyPending!=o.C001_ReturnQtyPending
or i.C001_ReturnQtyInProcess!=o.C001_ReturnQtyInProcess
or i.C001_ReturnQtyDueOut!=o.C001_ReturnQtyDueOut))
and [email protected])
:
- テーブル 'TXXX_InventoryFull'。スキャンカウント9240262、論理読み取り29548864
- テーブル 'T001_InventoryDetail'。スキャン回数1は、論理的には、私は存在する二を削除して行う場合は17259
を読み込み参加:
if exists (select 1
from dbo.TXXX_InventoryDetail o,
dbo.TXXX_InventoryFull i
where i.C001_AsOfDate= o.C001_AsOfDate
and i.C001_ProductID=o.C001_ProductID
and i.C001_StoreNumber=o.C001_StoreNumber
and [email protected]
and (i.C001_LastModelDate!=o.C001_LastModelDate
or o.C001_InventoryQty!=o.C001_InventoryQty
or i.C001_OnOrderQty!=o.C001_OnOrderQty
or i.C001_TBOQty!=o.C001_TBOQty
or i.C001_ModelQty!=o.C001_ModelQty
or i.C001_TBOAdjustQty!=o.C001_TBOAdjustQty
or i.C001_ReturnQtyPending!=o.C001_ReturnQtyPending
or i.C001_ReturnQtyInProcess!=o.C001_ReturnQtyInProcess
or i.C001_ReturnQtyDueOut!=o.C001_ReturnQtyDueOut)
and [email protected])
IO出力:
- テーブル 'TXXX_InventoryDetail'。スキャンカウント0、論理読み取り333952
- テーブル 'TXXX_InventoryFull'。スキャン数1、論理的には630
私はそれが存在する場合だと思うNow..the理由は、私はそれを削除して、このようSELECT COUNT(*)をすればということで読み取ります
select COUNT(*)
from dbo.T001_InventoryDetail o
where exists (select 1
from dbo.TXXX_InventoryFull i
where i.C001_AsOfDate= o.C001_AsOfDate
and i.C001_ProductID=o.C001_ProductID
and i.C001_StoreNumber=o.C001_StoreNumber
and [email protected]
and (i.C001_LastModelDate!=o.C001_LastModelDate
or o.C001_InventoryQty!=o.C001_InventoryQty
or i.C001_OnOrderQty!=o.C001_OnOrderQty
or i.C001_TBOQty!=o.C001_TBOQty
or i.C001_ModelQty!=o.C001_ModelQty
or i.C001_TBOAdjustQty!=o.C001_TBOAdjustQty
or i.C001_ReturnQtyPending!=o.C001_ReturnQtyPending
or i.C001_ReturnQtyInProcess!=o.C001_ReturnQtyInProcess
or i.C001_ReturnQtyDueOut!=o.C001_ReturnQtyDueOut))
and [email protected]
を
- TXXX_InventoryFull '。スキャン回数41、論理読み取り回数692
- T001_InventoryDetail '。スキャンカウント65、論理読み取り値17477
- ワークテーブル '。スキャン回数0、論理読み込み0
CPUについてはどうですか? – gbn