Упрощение времени выполнения подзапроса SQL
у меня есть следующий запрос, который занимает более 4 минут для просмотра есть ли другой способ, чтобы переписать этот запрос не в том, что таблица содержит billsDetails 100к записей и Billtable содержится 10к записей
Структура таблицы BillDetails
BillDetailsID bigint not null " PK"
productID bigint null,
billID bigint null
BillType tinyint not null
BillsOperations стол
Биллид бигинт не нулевой " ПК"
Атрибутом parentId значение типа bigint нуль "само отношение"
IsPermitted бит not null
BillType tinyint not null
SELECT * FROM ( SELECT b.BillID, b.Code,b.BillType, dbo.Fn_BillNameByType(b.BillType) AS BillTypeName , (SELECT COUNT(BillDetailID) FROM dbo.BillsDetailsOperations WHERE BillID= b.BillID) AS OriginalCount, ( SELECT COUNT(DISTINCT ProductID) FROM dbo.BillsDetailsOperations WHERE BillID IN ( SELECT BillID FROM dbo.BillsOperations WHERE ParentID = b.BillID AND BillType IN (9,10))) AS PermittedCount FROM dbo.BillsOperations AS b WHERE b.IsPermitted = 1 and b.BillType NOT IN (5,8,9,10)) AS detailsTbl WHERE (detailsTbl.OriginalCount < detailsTbl.PermittedCount) OR (detailsTbl.OriginalCount > detailsTbl.PermittedCount)
Что я уже пробовал:
я пытался создать группу, но не работал так, как я хочу
itsmypassion
Пожалуйста, укажите структуру таблицы.
TheSniper105
я сделал
FranzBe
Вы уже проверили опцию "Включить фактический план выполнения" и посмотрели на результаты?
TheSniper105
включение этой опции занимает много времени
Jörgen Andersson
Просто любопытно.
Вы приняли мое решение, значит, оно сработало.
Насколько быстрее он стал?
TheSniper105
он выполняется в 00: 00: 31 быстрее, чем рассматриваемый запрос, и я нашел другое решение я принимаю ваш ответ, потому что он дает мне ключ, чтобы сделать запрос быстрее (join вместо sub query) я нашел решение, которое выполняется в 00: 00:00: D
Jörgen Andersson
Рад помочь.