Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Проблемы с оптимизацией запроса

$
0
0
Добрый день, разбираюсь почему запрос долго выбирает данные (4 сек), столкнулся со странной проблемой
сам запрос
SELECT top 40
	[tbl_Problem].[StatusID] AS [StatusID],
	[tbl_ProblemStatus].[Name] AS [StatusName],
	[tbl_ProblemStatus].[IsFinish] AS [IsFinish],
	[tbl_Problem].[AuthorID] AS [AuthorID],
	[Author].[Name] AS [AuthorName],
	[tbl_Problem].[CIServiceID] AS [CIServiceID],
	[tbl_CIService].[Name] AS [CIServiceName],
	[tbl_Problem].[ConfigurationItemID] AS [ConfigurationItemID],
	[tbl_ConfigurationItem].[Name] AS [ConfigurationItemName],
	[tbl_Problem].[AffectsCIID] AS [AffectsCIID],
	[AffectsCI].[Name] AS [AffectsCIName],
	[tbl_Problem].[Solution] AS [Solution],
	[tbl_Problem].[PriorityID] AS [PriorityID],
	[tbl_ProblemPriority].[Name] AS [PriorityName],
	[tbl_Problem].[UrgencyID] AS [UrgencyID],
	[tbl_ProblemUrgency].[Name] AS [UrgencyName],
	[tbl_Problem].[OwnerID] AS [OwnerID],
	[Owner].[Name] AS [OwnerName],
	[tbl_Problem].[ConciseDescription] AS [ConciseDescription],
	[tbl_Problem].[RegistrationDate] AS [RegistrationDate],
	[tbl_Problem].[Number] AS [Number],
	[tbl_Problem].[ProblemTypeID] AS [ProblemTypeID],
	[tbl_ProblemType].[Name] AS [ProblemTypeName],
	[tbl_Problem].[FullDescription] AS [FullDescription],
	[tbl_Problem].[ImpactID] AS [ImpactID],
	[tbl_ProblemImpact].[Name] AS [ImpactName],
	[tbl_Problem].[ImpactDegree] AS [ImpactDegree],
	[tbl_Problem].[ID] AS [ID]
FROM
	[dbo].[tbl_Problem]  AS [tbl_Problem]
LEFT OUTER JOIN
	[dbo].[tbl_ConfigurationItem] AS [tbl_ConfigurationItem] ON [tbl_ConfigurationItem].[ID] = [tbl_Problem].[ConfigurationItemID]
LEFT OUTER JOIN
	[dbo].[tbl_ConfigurationItem] AS [AffectsCI] ON [AffectsCI].[ID] = [tbl_Problem].[AffectsCIID]
LEFT OUTER JOIN
	[dbo].[tbl_Contact] AS [Author] ON [Author].[ID] = [tbl_Problem].[AuthorID]
LEFT OUTER JOIN
	[dbo].[tbl_CIService] AS [tbl_CIService] ON [tbl_CIService].[ID] = [tbl_Problem].[CIServiceID]
LEFT OUTER JOIN
	[dbo].[tbl_ProblemPriority] AS [tbl_ProblemPriority] ON [tbl_ProblemPriority].[ID] = [tbl_Problem].[PriorityID]
LEFT OUTER JOIN
	[dbo].[tbl_ProblemUrgency] AS [tbl_ProblemUrgency] ON [tbl_ProblemUrgency].[ID] = [tbl_Problem].[UrgencyID]
LEFT OUTER JOIN
	[dbo].[tbl_Contact] AS [Owner] ON [Owner].[ID] = [tbl_Problem].[OwnerID]
LEFT OUTER JOIN
	[dbo].[tbl_ProblemType] AS [tbl_ProblemType] ON [tbl_ProblemType].[ID] = [tbl_Problem].[ProblemTypeID]
LEFT OUTER JOIN
	[dbo].[tbl_ProblemImpact] AS [tbl_ProblemImpact] ON [tbl_ProblemImpact].[ID] = [tbl_Problem].[ImpactID]
LEFT OUTER JOIN
	[dbo].[tbl_ProblemStatus] AS [tbl_ProblemStatus] ON [tbl_ProblemStatus].[ID] = [tbl_Problem].[StatusID] 
WHERE
	(
		tbl_Problem.AffectsCIID in (select ID from fn_GetPathForConfigurationItem('FDC83724-F48B-4590-80CA-96F8F158347F'))
			OR
		[tbl_Problem].[OrganizationID] = 'C8C54382-6B10-4095-B3CC-FFAF1C11BD9A' 
			OR
		[tbl_Problem].[OrganizationID] = '7D9BDA55-6194-4B6F-BE8C-31EEE13F8AB2'
	) 
		AND
		[tbl_ProblemStatus].[IsFinish] = 0

время выполнения - 4 сек, выдает 3 строчки
Но если в условии изменить [tbl_ProblemStatus].[IsFinish] = 0 на [tbl_ProblemStatus].[IsFinish] = 1
выбирается за 0,2 секунды.
в таблице tbl_ProblemStatus 6 строк с isfinish =0 и 3 с isfinish = 1
Выборка с условием [tbl_ProblemStatus].[IsFinish] = 1 - 1300 строк, но выбирается за 0,2 секунды
Выборка с условием [tbl_ProblemStatus].[IsFinish] = 0 - 3 строки, но выбирается за4 секунды
Помогите понять в чем может быть проблема, уже весь мозг сломал

Viewing all articles
Browse latest Browse all 7251

Trending Articles