избавиться от сортировки

relief
Дата: 30.04.2015 09:30:29
Есть такой скрипт с запросом и есть план по этому запросу в аттаче.
В данном плане сортировка занимает 24%. Как ее можно убрать?

Запрос упрощен по сравнению с рабочим, но сделан по аналогии. В рабочем запросе сортировка занимает 40%.

CREATE CLUSTERED INDEX [IX_Sales] ON [dbo].[Sales]
(
	[SaleDate] ASC,
	[Store] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

CREATE UNIQUE CLUSTERED INDEX [IX_Stores] ON [dbo].[Stores]
(
	[Store] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

create table #tmpArticuls2
(
  articul  varchar(50) collate SQL_Latin1_General_CP1_CI_AS
) 

select a.*, c.StoreName 
from sales a 
	join #tmpArticuls2 b 
	on a.articul = b.articul
	join Stores c 
	on a.store = c.store
iap
Дата: 30.04.2015 09:33:22
relief,

а если индекс по #tmpArticuls2.articul сделать?
Сколько в этой таблице записей?
Glory
Дата: 30.04.2015 09:35:22
relief
Как ее можно убрать?

А вы видели критерий этой сортировки ? Список выходных полей ?
Какой из ваших индексов соответсвует им ?
relief
Дата: 30.04.2015 09:39:05
iap
relief,

а если индекс по #tmpArticuls2.articul сделать?
Сколько в этой таблице записей?


создал
create index ix_Articula on #tmpArticuls2(articul)


ничего не изменилось


в таблице #tmpArticuls2 100 тысяч
relief
Дата: 30.04.2015 09:44:00
Glory
relief
Как ее можно убрать?

А вы видели критерий этой сортировки ? Список выходных полей ?
Какой из ваших индексов соответсвует им ?


видел, что сортирует по Store для джойна с Stores

добавлял
create index ix_store on Sales (store)
sp_updatestats


думал поможет - сортировка осталась.
а что надо добавить?
iap
Дата: 30.04.2015 09:44:28
relief,

в [dbo].[Sales] нет индекса по [Store] для показанного запроса.
Либо по [SaleDate] тоже ограничивайте.

P.S. файл я, конечно, не качал и, соответственно, не читал.
Glory
Дата: 30.04.2015 09:45:21
relief
видел, что сортирует по Store для джойна с Stores

А вы видели, что я задал 2 вопроса про сортировку ?
relief
Дата: 30.04.2015 09:47:23
iap
relief,

в [dbo].[Sales] нет индекса по [Store] для показанного запроса.
Либо по [SaleDate] тоже ограничивайте.

P.S. файл я, конечно, не качал и, соответственно, не читал.



вы имеете ввиду?
create index ix_store on Sales (store)
sp_updatestats


не помогло
iap
Дата: 30.04.2015 09:50:17
relief
вы имеете ввиду?
create index ix_store on Sales (store)
sp_updatestats
Либо порядок полей в составном индексе поменять.
Либо оба поля составного поля в запросе использовать.

Раз не помогло, тогда не знаю...
relief
Дата: 30.04.2015 09:51:27
Glory
relief
видел, что сортирует по Store для джойна с Stores

А вы видели, что я задал 2 вопроса про сортировку ?


вы про выходные поля?

добавил такой индекс

CREATE NONCLUSTERED INDEX [ix_2] ON [dbo].[Sales]
(
	[Articul] ASC
)
INCLUDE ( 	[Store],
	[SaleDate],
	[Buyer])  


в плане теперь он используется, но сортировка осталась