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

Откуда:
Сообщений: 257
Добрый день.

update d3
set nameT = Random.Title
from Table_d3 d3 cross apply(select top 1 Title from Table_d3 d33 where CONVERT(VARCHAR(10),d3.CreateDate,104) = CONVERT(VARCHAR(10),d33.CreateDate,104) and d33.Title is not null order by newid()) as Random
where (IsUseOn = 1 or IsUseoff = 1)

Помогите, пожалуйста, можно ли его как-то оптимизировать.
Есть индексы по полям
create index IX_ d3_CreateDate_EventTitle on Table_d3(CreateDate, Title) where Title is not null

У меня все равно по таблице остается Index Scan Table_d3, если я не ошибаюсь, то проблема у меня в том, что я использую order by newid(), есть ли вариант, как-то обойти данную ситуацию? Ну или как-то лучше написать скрипт, работает он верно, только время выполнения несколько часов((
23 янв 15, 13:11    [17159218]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли переписать запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
user87
У меня все равно по таблице остается Index Scan Table_d3,

А что еще можно сделать для where (IsUseOn = 1 or IsUseoff = 1), кроме сканирования ?
И ли как можно применить поиск по индексу для выражения CONVERT(VARCHAR(10),d3.CreateDate,104), которого нет в индексе ?
23 янв 15, 13:19    [17159288]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли переписать запрос  [new]
постоянный мембер
Guest
автор
where CONVERT()
Любые преобразования в WHERE это дикие тормоза. И без использования индекса.
Иногда добавление поля с "датой без времени" помогает делать выборки заметно проще и быстрее.
23 янв 15, 13:23    [17159324]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли переписать запрос  [new]
user87
Member

Откуда:
Сообщений: 257
Спасибо большое, помогло с convert убрал ее, все заработало очень быстро
23 янв 15, 13:52    [17159589]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить