У меня вопрос о производительности запроса.Sql Производительность сервера в операторе select
У меня есть таблица с именем tblHistory и содержит 17'000 строк. У меня есть таблица с именем tblItem с 14'000 строками и таблицей tblItemType с примерно 10 строками, которые имеют отношение, как описано ниже в запросе.
Следующий запрос показывает 0sec в Managment студии:
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
Следующий запрос показывает 0sec в Management Studio:
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'
)
У вас есть идея, почему это так долго или вы можете сказать мне, как я могу сделать это быстрее?
спасибо.
С уважением. Иван
Какие показатели делают у вас есть на ваших столах? – sphair
Как вы отлаживаете такие проблемы, просматривая план выполнения. Отправьте его здесь. – usr
Вы посмотрели на план выполнения, чтобы узнать, какая часть вашего запроса занимает больше всего времени? – Sedecimdies