|
Странное поведение табличной инлайн функции с параметром константой или переменной
|
|||
---|---|---|---|
#18+
Всем привет. Коллеги, у меня какой-то странный спецэффект в табличной функции (только инлайн, если сделать многострочную все работает нормально). Повторяется на 2016 и 2019 (dev). Почему результаты запросов при передаче параметра переменной или константой - разные и как с этим бороться? На смысл не обращайте внимания, я просто выделил минимально проблему. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 16:53 |
|
Странное поведение табличной инлайн функции с параметром константой или переменной
|
|||
---|---|---|---|
#18+
Т.к. dbo.wtf это inline функция, то оптимизатор ее разворачивает и упрощает запрос. В первом случае упрощается до Код: sql 1.
во втором Код: sql 1.
в плане запроса это видно PS Это конечно не отменяет того факта, что это баг. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 17:11 |
|
Странное поведение табличной инлайн функции с параметром константой или переменной
|
|||
---|---|---|---|
#18+
Да, интересное поведение. Можно даже упростить до такого: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 17:16 |
|
Странное поведение табличной инлайн функции с параметром константой или переменной
|
|||
---|---|---|---|
#18+
В качестве workaround-а Код: sql 1. 2. 3.
ну или любой другой способ, форсирующий Scalar Operator над @i ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2020, 17:24 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1685609]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
41ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 258ms |
total: | 407ms |
0 / 0 |