Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 очень долго выполняеться запрос  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
select customerid,subtype [Service],ph.status,count(*) [Count] into #1
from login ph
join customeritems1 it on it.item=ph.item 
join package1 pac on pac.item=ph.item and pac.status in (6) and convert(varchar,pac.Fromdate,120)<'2009-09-31' and convert(varchar,pac.todate,120)>='2009-09-31' 
left join rateplan rat on rat.priceid=pac.priceid
where ph.item<>0 and convert(varchar,ph.Fromdate,120)<'2009-09-31' and convert(varchar,ph.Todate,120)>='2009-09-31'
group by customerid,subtype,ph.status


select CustName,cur.customerid,city,cur.type,naimen,st.[Description],[count]
from  vw_CurCustName cur
join #1 a on a.customerid=cur.customerid
left join rateplan_subtype rat on rat.subtype=a.service
join phonestatus st on st.status=a.status and st.type=0
where cur.customerid not in (2,13,14,444,445,446,447,448,450,451,452,453,454,455)
order by cur.type,city,cur.customerid

drop table #1

так и весит нечего не происходить
как ускорить процес
23 ноя 09, 14:10    [7964378]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
iljy
Member

Откуда:
Сообщений: 8711
718,

во-первых - привести план, во-вторых - промониторить блокировки.
23 ноя 09, 14:14    [7964406]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
718
[
так и весит нечего не происходить
как ускорить процес

В теме запрос в единственном числе, в скрипте запросов уже два.
Какой из них выполняется долго нужно угадать ?
23 ноя 09, 14:15    [7964420]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Сколько записей в login?
Есть ли индексы по полям FromDate, ToDate и item?
23 ноя 09, 14:17    [7964438]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
iap,

около 20000 записи

CREATE TABLE [PACKAGE1] (
	[Item] [int] NOT NULL ,
	[FromDate] [datetime] NOT NULL CONSTRAINT [DF_PACKAGE1_FromDate] DEFAULT (getdate()),
	[ToDate] [datetime] NOT NULL CONSTRAINT [DF_PACKAGE1_ToDate] DEFAULT ('9999-01-01'),
	[PriceID] [int] NOT NULL ,
	[Amount] [real] NOT NULL CONSTRAINT [DF_PACKAGE1_Amount] DEFAULT (0),
	[Status] [tinyint] NOT NULL CONSTRAINT [DF_PACKAGE1_Status] DEFAULT (1),
	[UID] [smallint] NOT NULL CONSTRAINT [DF_PACKAGE1_UID] DEFAULT (0),
	[EnterDate] [datetime] NOT NULL CONSTRAINT [DF_PACKAGE1_EnterDate] DEFAULT (getdate()),
	[Type] [int] NOT NULL ,
	[Quantity] [int] NOT NULL CONSTRAINT [DF_PACKAGE1_Quantity] DEFAULT (1),
	[Inserted] [tinyint] NULL CONSTRAINT [DF_PACKAGE1_Inserted] DEFAULT (1),
	CONSTRAINT [PK_PACKAGE1] PRIMARY KEY  CLUSTERED 
	(
		[Item],
		[FromDate],
		[ToDate],
		[PriceID],
		[Status]
	)  ON [PRIMARY] 
) ON [PRIMARY]
GO



CREATE TABLE [LOGIN] (
	[Item] [int] NOT NULL ,
	[FromDate] [datetime] NOT NULL ,
	[Todate] [datetime] NOT NULL ,
	[Login] [varchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NOT NULL ,
	[EnterDate] [datetime] NOT NULL CONSTRAINT [DF_LOGIN_EnterDate] DEFAULT (getdate()),
	[Status] [smallint] NOT NULL ,
	[TypeID] [tinyint] NOT NULL CONSTRAINT [DF_LOGIN_TypeID] DEFAULT (2),
	[UID] [int] NOT NULL CONSTRAINT [DF_LOGIN_UID] DEFAULT (0),
	[ChangeType] [int] NOT NULL CONSTRAINT [DF_LOGIN_ChangeType] DEFAULT (0)
) ON [PRIMARY]
GO


23 ноя 09, 14:26    [7964525]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
Glory,

загвоздка в первом запросе
23 ноя 09, 14:26    [7964533]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
pacha
Member

Откуда:
Сообщений: 239
странное условие:
convert(varchar,ph.Fromdate,120)<'2009-09-31' and convert(varchar,ph.Todate,120)>='2009-09-31'
нельзя обойтись без convert?
23 ноя 09, 14:31    [7964592]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33351
Блог
convert(varchar,pac.Fromdate,120)<'2009-09-31' 
убрать convert, он лишний, судя по скрипту таблиц
23 ноя 09, 14:33    [7964611]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
718,

Вы сделали всё, чтобы индексы по FromDate и ToDate не использовались.
Ограничения надо накладывать на сами поля, а не на функции от них.
23 ноя 09, 14:33    [7964613]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Вот это
convert(varchar,ph.Fromdate,120)<'2009-09-31' and convert(varchar,ph.Todate,120)>='2009-09-31'
эквивалентно этому
ph.Fromdate<'2009-09-31' and ph.Todate>='2009-09-31'
Даже если в ph.Fromdate и в ph.Todate ненулевое время
23 ноя 09, 14:37    [7964653]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
iljy
Member

Откуда:
Сообщений: 8711
718,

при наличии индекса использовать такое
and convert(varchar,pac.Fromdate,120)<'2009-09-31' and convert(varchar,pac.todate,120)>='2009-09-31' 
- убийство. переделайте так:
and Fromdate<'20090931' and pac.todate>='20090931' 
и - что там с блокировками? раз "ничего2 не делает - значит скорее всего ждет освобождения ресурсов.
23 ноя 09, 14:38    [7964663]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
Вот это
convert(varchar,ph.Fromdate,120)<'2009-09-31' and convert(varchar,ph.Todate,120)>='2009-09-31'
эквивалентно этому
ph.Fromdate<'2009-09-31' and ph.Todate>='2009-09-31'
Даже если в ph.Fromdate и в ph.Todate ненулевое время
Поправка:
ph.Fromdate<'20090930' and ph.Todate>='20090930'
Кстати, разве в сентябре не 30 дней?
23 ноя 09, 14:39    [7964667]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
iap
Вот это
convert(varchar,ph.Fromdate,120)<'2009-09-31' and convert(varchar,ph.Todate,120)>='2009-09-31'
эквивалентно этому
ph.Fromdate<'2009-09-31' and ph.Todate>='2009-09-31'
Даже если в ph.Fromdate и в ph.Todate ненулевое время


изначално так и состоял запрос, но после зависания я попробовал этот вариант
23 ноя 09, 15:02    [7964875]     Ответить | Цитировать Сообщить модератору
 Re: очень долго выполняеться запрос  [new]
718
Member

Откуда: Tashkent
Сообщений: 319
всем спасибо
проверил процессы как сказал iljy
разобрался, дело было в процессах
23 ноя 09, 15:04    [7964895]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить