クエリのパフォーマンスについて質問があります。
tblHistory という名前のテーブルがあり、17,000 行が含まれています。14'000 行の tblItem という名前のテーブルと、以下のクエリで説明するような関係にある約 10 行のテーブル tblItemType があります。
次のクエリは、managment Studio で 0sec を示しています。
Select tblItem_Id, tblItem_Title,
CountHistoryItems =
(
SELECT count(*) FROM tblHistory
where tblHistory_ItemId = tblItem_Id
)
from tblItem INNER JOIN tblItemType ON tblItem_ItemTypeId = tblItemType_Id
次のクエリは、Management Studio で 0sec を示します。
Select tblItem_Id, tblItem_Title
from tblItem INNER JOIN tblItemType ON tblItem_ItemTypeId = tblItemType_Id
where
(
tblItemType_BaseTypeId = '00000000-0000-0000-0000-000000000200' or
tblItemType_BaseTypeId = '00000000-0000-0000-0000-000000000300'
)
次のクエリのように両方の例を一緒に使用するとすぐに、管理スタジオで結果を取得するのに約 2 分かかります。
Select tblItem_Id, tblItem_Title,
CountHistoryItems =
(
SELECT count(*) FROM tblHistory
where tblHistory_ItemId = tblItem_Id
)
from tblItem INNER JOIN tblItemType ON tblItem_ItemTypeId = tblItemType_Id
where
(
tblItemType_BaseTypeId = '00000000-0000-0000-0000-000000000200' or
tblItemType_BaseTypeId = '00000000-0000-0000-0000-000000000300'
)
これがなぜそんなに時間がかかるのか、または私がそれをより速くする方法を教えてもらえますか?
どうもありがとうございました。
よろしくお願いします。イヴァン