|
|
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
Пусть имеется запрос: select что-то from TableName where ColumnName=ФункцияВПакетеБезПараметров. Пусть в таблице N записей. Вопрос: Функция будет вызвана 1 раз или N? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 10:04 |
|
||
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
Я был уверен, что 1. Но решил проверить, и несколько озадачился: Код: plaintext 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. 36. 37. 38. У меня стабильно получается 2 вызова. На других таблицах- то же самое, количество вызовов не один, но и не равное числу записей в таблице. Может, в чем-то ошибся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 10:48 |
|
||
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
я при вызове функции писал в файл по 1 строчке. количество строк не только не совпадало с количеством возвращаемых записей но и было больше иногда, а иногда и меньше. если кто знает по этому поводу что-нить просветите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 12:58 |
|
||
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
Я тоже немного ковырялся по этому поводу. У меня получилось кол-во вызовов=число записей. Deterministic на функцию не помог. Это в том случае , когда сравнивается КОЛОНКА. Если вместо нее, например, константа то 1 вызов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 13:32 |
|
||
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
А как быть с этим? Код: plaintext 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 13:51 |
|
||
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
во-во примерно так у меня и получалось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 13:54 |
|
||
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
Ну дык - от плана запроса зависит ведь ! Денис, select /*+ full(t)*/ count(*) from scott.emp t where empno = get_number 14 раз ? Вот почему deterministic не работает :-( Хочу чтоб без всяких там селектов из дуалов один раз вызывалась ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 14:37 |
|
||
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
Да, действительно, если TABLE ACCESS FULL, то вроде как функция вызовется по разу на запись. А при чем тут DETERMENISTIC? Из определения, "DETERMINISTIC keyword to indicate that the function will always return the same output return value for any given set of input argument values, now and in the future." http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96524/c19depnd.htm#4374 Поставил я у функции эту кляузу, ну и что? Ситуация не изменилась. Интеесно, а почему все-таки по индексу SCOTT.EMP(EMPNO) функция 2 раза дернуласть? Можно ли одной фразой ответить на исходный вопрос, т.е. сколько раз вызовется функция, с учетом всех факторов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 15:00 |
|
||
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
Напишите select e.empno from scott.emp e where e.empno in (select get_number from dual) и не парьтесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 15:16 |
|
||
|
Порядок вызова функций в SQL
|
|||
|---|---|---|---|
|
#18+
2 Denis http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96533/opt_ops.htm#1005493 Я надеялся, что оптимизатор может сообразить - не надо повторно вызов делать :-( Почему два вызова - не знаю. Не могу придумать причину, по которой ораклю это надо. >Можно ли одной фразой ответить на исходный вопрос, т.е. сколько раз >вызовется функция, с учетом всех факторов? Столько, сколько раз изменялся предикат во where в соответствии с планом запроса, плюс один, если использовался индекс :-) шучу. 2va_kochnev любопытно все ж ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2003, 16:08 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32128111&tid=1991284]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
181ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 494ms |

| 0 / 0 |
