|
Sybase SA 12: Скорость выполнения запроса в UDF и в живую
|
|||
---|---|---|---|
#18+
Hi All, Есть некий запрос по таблице. Одно из полей этого запроса представляет собой сложный подзапрос с парой if exists(). Этот подзапрос почти не влияет на общую скорость выборки. Но смотрится такой запрос не очень красиво. Поэтому я решил поместить подзапрос (практически ничего в нем не меняя) внутрь DETERMINISTIC UDF. После этого общая скорость выборки упала почти в два раза. Вопрос: Почему упала скорость ? Это SA12 так медленно вызывает UDF или сама UDF почему то не оптимизируется или тут есть еще какие то причины ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2013, 16:37 |
|
Sybase SA 12: Скорость выполнения запроса в UDF и в живую
|
|||
---|---|---|---|
#18+
Это код запроса с подзапросом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Это код запроса в вынесением подзапроса в UDF: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Это сама UDF: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2013, 16:56 |
|
Sybase SA 12: Скорость выполнения запроса в UDF и в живую
|
|||
---|---|---|---|
#18+
Stalker4Вопрос: Почему упала скорость ? Это SA12 так медленно вызывает UDF или сама UDF почему то не оптимизируется или тут есть еще какие то причины ?В варианте с подзапросом сервер может обрабатывать его для нескольких строк главного запроса за раз а потом уже брать значения из кэша. В случае с UDF ты потребовал отдельных запусков подзапроса для каждой строки внешнего запроса. Вариантов решения два: Можно вынести большой-страшный подзапрос во вьюшку. Можно сделать выборку в во временную таблицу а потом читать ее из главного запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2013, 19:58 |
|
|
start [/forum/topic.php?fid=55&msg=38435851&tid=2009920]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 172ms |
0 / 0 |