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

Откуда:
Сообщений: 57
Все вышеперечисленное делается с подсказками по индексам.
Помогите разобраться
Есть таблица tab с колонками a и b - обе индексированы.
#tmp - временная табличка

Это запрос работает быстро:
insert #tmp (val)
select a from tab where b = %VALUE%

select * from tab where a in (selec val from #tmp)


А этот запрос тупит:
select * from tab where a in (select a from tab where b = %VALUE%)


Как побороть эту фигню?

Нужно это чтобы update не тормозил, дело в том, что без временной таблички запрос
select a from tab where b = %VALUE%


Работает вообще супер быстро, но только с подсказками по индексам, а подсказки по индексам в Update пихать нельзя...
25 ноя 15, 12:16    [18470095]     Ответить | Цитировать Сообщить модератору
 Re: Индексы работают странно  [new]
Все вышеперечисленное делается
Guest
PZH,

в апдейт можно пихать и подсказки, и where, и джойны, и подзапросы
25 ноя 15, 12:18    [18470116]     Ответить | Цитировать Сообщить модератору
 Re: Индексы работают странно  [new]
Glory
Member

Откуда:
Сообщений: 104760
PZH
А этот запрос тупит:

Почему вы решили, что он тупит ?

PZH
Как побороть эту фигню?


select * from tab t1 where t1.a in (select t2.a from tab t2 where t2.b = %VALUE%)
25 ноя 15, 12:19    [18470122]     Ответить | Цитировать Сообщить модератору
 Re: Индексы работают странно  [new]
PZH
Member

Откуда:
Сообщений: 57
Все вышеперечисленное делается,

Да. Просто через update ... from ... with ... where сделал и все летает

Но все таки, чисто для "знать". Почему лажает второй вариант?
25 ноя 15, 13:32    [18470593]     Ответить | Цитировать Сообщить модератору
 Re: Индексы работают странно  [new]
Glory
Member

Откуда:
Сообщений: 104760
PZH
Почему лажает второй вариант?

А почему вы решили, что он лажает то ?
25 ноя 15, 13:33    [18470606]     Ответить | Цитировать Сообщить модератору
 Re: Индексы работают странно  [new]
Владислав Колосов
Member

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

похоже, что Вы написали не на тот форум, т.к. такого синтаксиса у сиквела нет:

select a from tab where b = %VALUE%
25 ноя 15, 13:46    [18470693]     Ответить | Цитировать Сообщить модератору
 Re: Индексы работают странно  [new]
PZH
Member

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

Я делаю эти запросы и они по времени выполнения отличаются в десятки раз.
26 ноя 15, 11:05    [18474625]     Ответить | Цитировать Сообщить модератору
 Re: Индексы работают странно  [new]
Glory
Member

Откуда:
Сообщений: 104760
PZH
Я делаю эти запросы и они по времени выполнения отличаются в десятки раз.

По-вашему выходит, что разные запросы должны работать за одинаковое время.
Иначе говоря, вообще все запросы должны работать за одинаковое время.
26 ноя 15, 11:08    [18474633]     Ответить | Цитировать Сообщить модератору
 Re: Индексы работают странно  [new]
SFlash
Member

Откуда:
Сообщений: 143
select t1.* from tab t1 
join (select a from tab where b = %VALUE%) t2 on (t1.a=t2.a)
27 ноя 15, 12:49    [18481053]     Ответить | Цитировать Сообщить модератору
 Re: Индексы работают странно  [new]
edyaN
Member

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

вам не нужна магия SQL. Вам нужно понять, почему запрос медленный. В этом вам поможет план выполнения и установка
set statistics io, time on

А чтобы получить полезный ответ на форуме, то надо привести и структуру таблиц.
Без этой информации вы не сможете решить эту проблему, а мы не сможем вам в этом помочь.
27 ноя 15, 16:17    [18482468]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить