powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с кодом Хранимой процедуры, и временем выполнения
14 сообщений из 14, страница 1 из 1
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822608
Tohins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть хранимая процедура
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
USE [t_artemtest]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [sm_report].[p_COUNTER_HouseController]
@supplierID					int,
@serviceID					int = null,
@controllerID				int,	--Контролер
@numberMonth			int		--Дата плана обхода
AS
DECLARE @dateCurrent			int

EXEC p_GET_currentDate_int @dateCurrent OUT	

; with fc as
(
select
	distinct f.accountID, f.supplierID
from
	dbo.flatsServices as f
where
		f.supplierID = @supplierID and f.calculated = 1 and f.dataClose > @dateCurrent
) 
,cmv as
(select counterID, max(cntrVlID) cntrVlID from countersvalues cv group by counterID)
 

SELECT
	s.nameSupplier,
	se.nameService,
    gdpo.nameGD as namePostOffice,
	substring(acc.accountN,1,3)+'-'+substring(acc.accountN,4,3)+'-'+substring(acc.accountN,7,3) as accountN,
	va.nameStreet,
	va.houseN,
	va.corpus,
	va.flatN,
	va.flatNint,
	ct.nameCounter,
	c.numberCounter,
	c.firsterValue,
	isnull(cv.valueEnd,'''') as valueEnd,	
	January, February, March, April, May, June, July, August, September, October, November, December
FROM 
	v_counterAccount as c
	JOIN flatsServices as fs ON c.objectID = fs.accountID and fs.serviceID = c.serviceID and fs.calculated = 1 and fs.dataClose > dbo.f_Get_currentDate_int()
	JOIN sm_address.account as acc ON c.objectID = acc.accountID
	JOIN v_address as va ON acc.flatID = va.flatID
	JOIN fc on c.objectID = fc.accountID --Лубов Д. 27.09.2017
	JOIN countersvalues cv ON cv.counterID=c.counterID 
	JOIN cmv ON cmv.cntrVlID=cv.cntrVlID 
	JOIN gd_guide as gdpo ON gdpo.gdID=va.postOfficeID
	JOIN countersTypes as ct ON c.cntrTypeID=ct.cntrTypeID
	JOIN suppliers as s ON fc.supplierID = s.supplierID
	JOIN services as se ON fs.serviceID = se.serviceID
	JOIN houseController as hc ON hc.houseID=va.houseID and fs.serviceID = hc.serviceID and hc.controllerID= isnull(@controllerID, hc.controllerID)
	JOIN deluxes as d ON fs.deluxeID = d.deluxeID and d.objectCalcID <> 131
WHERE  
	fs.serviceID = ISNULL(@serviceID, fs.serviceID)
    and c.dataclose>@dateCurrent


проблема в следующем, при запуске в студии mssql
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
USE [t_artemtest]
GO

DECLARE	@return_value int

EXEC	@return_value = [sm_report].[p_COUNTER_HouseController]
		@supplierID = 253,
		@serviceID = 3,
		@controllerID = NULL,
		@numberMonth = NULL

SELECT	'Return Value' = @return_value

GO



выполнение ХП растягивается на произвольное время(до 10 минут), какое серверу вздумается, в то же время полностью скопированный код из этой процедуры в отдельное окно mssql
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
[src]DECLARE
@supplierID					int = 253,
@serviceID					int = 3,
@controllerID				int,	--Контролер
@numberMonth			int,		--Дата плана обхода
@dateCurrent			int

EXEC p_GET_currentDate_int @dateCurrent OUT	

; with fc as
(
select
	distinct f.accountID, f.supplierID
from
	dbo.flatsServices as f
where
		f.supplierID = @supplierID and f.calculated = 1 and f.dataClose > @dateCurrent
) 
,cmv as
(select counterID, max(cntrVlID) cntrVlID from countersvalues cv group by counterID)
 

SELECT
	s.nameSupplier,
	se.nameService,
    gdpo.nameGD as namePostOffice,
	substring(acc.accountN,1,3)+'-'+substring(acc.accountN,4,3)+'-'+substring(acc.accountN,7,3) as accountN,
	va.nameStreet,
	va.houseN,
	va.corpus,
	va.flatN,
	va.flatNint,
	ct.nameCounter,
	c.numberCounter,
	c.firsterValue,
	isnull(cv.valueEnd,'''') as valueEnd,	
	January, February, March, April, May, June, July, August, September, October, November, December
FROM 
	v_counterAccount as c
	JOIN flatsServices as fs ON c.objectID = fs.accountID and fs.serviceID = c.serviceID and fs.calculated = 1 and fs.dataClose > dbo.f_Get_currentDate_int()
	JOIN sm_address.account as acc ON c.objectID = acc.accountID
	JOIN v_address as va ON acc.flatID = va.flatID
	JOIN fc on c.objectID = fc.accountID --Лубов Д. 27.09.2017
	JOIN countersvalues cv ON cv.counterID=c.counterID 
	JOIN cmv ON cmv.cntrVlID=cv.cntrVlID 
	JOIN gd_guide as gdpo ON gdpo.gdID=va.postOfficeID
	JOIN countersTypes as ct ON c.cntrTypeID=ct.cntrTypeID
	JOIN suppliers as s ON fc.supplierID = s.supplierID
	JOIN services as se ON fs.serviceID = se.serviceID
	JOIN houseController as hc ON hc.houseID=va.houseID and fs.serviceID = hc.serviceID and hc.controllerID= isnull(@controllerID, hc.controllerID)
	JOIN deluxes as d ON fs.deluxeID = d.deluxeID and d.objectCalcID <> 131
WHERE  
	fs.serviceID = ISNULL(@serviceID, fs.serviceID)
    and c.dataclose>@dateCurrent




выполняется за нормальные 2-4 секунды. Проштудировал уже все статьи с перекомпиляцией планов выполнения, очищением кэша ХП и т.д.
Подскажите пожалуйста кто сталкивался с такой проблемой, спасибо.
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822611
Tohins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Версия сервера
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64) Aug 19 2014 12:21:34 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822614
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822616
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tohinsвыполнение ХП растягивается на произвольное время(до 10 минут), какое серверу вздумается, в то же время полностью скопированный код из этой процедуры в отдельное окно mssql
[SRC sql][/SRC]Во первых, посмотрите всё таки, в чём разница, и получите актуальные планы ваыполнения для проблемного запроса

TohinsПроштудировал уже все статьи с перекомпиляцией планов выполнения, очищением кэша ХП и т.д.А параметр стуффинг попробовали? Это же первое, что приходит в голову, особенно для @dateCurrent
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822619
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

@стуффинг@
сниффинг, по ссылке все возможные варианты :)
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822621
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKalexeyvg,

@стуффинг@
сниффингОй

Да, по ссылке хорошая статья, но большая, не каждый сумеет прочитать :-)
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822623
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgTaPaKalexeyvg,

@стуффинг@
сниффингОй

Да, по ссылке хорошая статья, но большая, не каждый сумеет прочитать :-)
тогда OPTION(RECOMPILE) и расходимся :)
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822625
Tohins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

OPTION(RECOMPILE) не помогает, уже пробовал

Код: html
1.
http://www.sommarskog.se/query-plan-mysteries.html

- эту статью я уже читал, проблема то не в приложении, а двух окнах студии по сути запускающими один код, один открыто, второй через скомпилированную ХП, сам понимаю что дело скорей всего в плане выполнения, но не могу понять чем планы могут отличаться при одном и том же коде
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822627
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tohinsно не могу понять чем планы могут отличаться при одном и том же кодеТак посмотрите, чем отличаются, чего гадать.
"Почему" - в статье как раз и написано.
Кратко - из за разных оценок оптимизатора, или из за разных установок SET
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822628
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tohins,

авторOPTION(RECOMPILE)
я ж надеюсь в процедуру вставили? и не WITH RECOMPILE?
показывайте медленный/быстрый план, и не картинкой
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822719
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822927
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One https://blogs.msdn.microsoft.com/sqlprogrammability/2008/11/26/optimize-for-unknown-a-little-known-sql-server-2008-feature/
Опять лечим припарками геморрой?
v_counterAccount - это, нибось, семиэтажная вьюха? И еще парочка таких же?
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39822929
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это к ТС вопрос
...
Рейтинг: 0 / 0
Проблема с кодом Хранимой процедуры, и временем выполнения
    #39823807
Tohins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex22, нет, вьюха нормальная.

Всем спасибо, пока готовил планы на обсуждение еще раз внимательно изучил их, нашел проблемный индекс, проблема ушла.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с кодом Хранимой процедуры, и временем выполнения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]