|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
Не могу понять причину, есть простой запрос Код: sql 1.
он выполняется без проблем, но когда я оборачиваю этот запрос в хранимую процедуру Код: sql 1. 2. 3. 4. 5. 6. 7.
получаю ошибку Msg 8622 Level 16 State 1 Line 1, Query processor could not produce a query plan because of the hints defined in this query. Подскажите чем 2 эти инструкции принципиально отличаются для сервера? Если убираю , index(index1) то работает запрос, но почему-то сервер не использует индекс по column1. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 21:08 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
lex452, обновление статистики решает проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 21:22 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
lex452, Индекс у вас фильтрованный походу ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 21:25 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
Критик, Не решает ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 21:27 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
felix_ff, Да, фильтрованный ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 21:27 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
lex452, а критерий фильтрации у вас по column1 или по другому полю? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 21:40 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
Критик, Да, по нему ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 22:06 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
lex452 Да, фильтрованный Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 22:19 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
lex452, не покатит, что бы применялся фильтрованный индекс у вас в предикате должно применяться условие точно такое же как фильтр у индекса. то есть если вы к примеру определили его так: Код: sql 1.
то в процедуре вы должны написать так: Код: sql 1. 2. 3. 4. 5. 6. 7.
ну точнее у вас предикат запроса должен не противоречить условиям фильтрации индекса ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 22:20 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
felix_ff, Я попробую так. Но почему запрос отдельно работает, и не работает внутри процедуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 22:32 |
|
Возникает ошибка 8622
|
|||
---|---|---|---|
#18+
lex452, у вас в процедуре используется параметр @value для оптимизатора на момент компиляции его значение не известно. (хотя вообще теоретически на первую компиляцию он его должен прослушивать по parameter-sniffing) то есть у вас может получится что в первый раз вы запустите процедуру с параметром @value = 10 а в другой раз с @value = 500 из-за этого проиходит коллизия для предиката фильтра индекса. в первом случае значение удовлетворяет предикату и все хорошо индекс может быть использован. а во втором случае значение больше чем значение предиката индекса и такой индекс уже никак использовать нельзя (в нем просто нет таких строк). вам invm написал как это обойти, добавить к инструкции select подсказку option (recompile) что бы у вас инструкция внутри хранимки всегда компилировалась с актуальным значением, но вас это не избавит от ошибки если вы передадите в процедуру значение которое не будет удовлетворять предикату фильтрации индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2020, 22:44 |
|
|
start [/forum/topic.php?fid=46&msg=40002704&tid=1685602]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 152ms |
0 / 0 |