|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Всем доброе время суток, столкнулся с такой проблеммой: есть запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
когда выполняю его отдельно все прекрасно и быстро и план как надо: PLAN SORT (JOIN (AN INDEX (IDX_ALTERNATENAME_NA), AN3 INDEX (IDX_ALTERNATENAME_ID), AN2 INDEX (IDX_ALTERNATENAME_ID), PC INDEX (IDX_POSTAL_CODES_NA_PC), GN INDEX (PK_GEONAME_GEONAMEID))) как только вставляю его в процедуру: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
всё съезжает набекрень, такое ощущение что оптимизация вообше не происходит, индексы вообше перестают использоваться. Попробовал указать план явно: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
получил ошибку компиляции: Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. Error while parsing procedure SEL_CITYANDPOSTCODES's BLR. index IDX_ALTERNATENAME_NA cannot be used in the specified plan. Почему вдруг индекс стал недоступен? куда рыть, почему снаружи всё нормально а в процедуре так? есть мысли? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 16:55 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, вот структура таблиц ешё в догонку ALTERNATENAME: Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99.
POSTAL_CODES: Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107.
GEONAME: Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 17:25 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, разве это одинаковые запросы? Код: sql 1.
и Код: sql 1.
И во втором запросе под where - 8 условий, в первом - 7. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 17:45 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, если запросы одинаковые, то разницы в планах отдельно и в процедуре быть не может. кроме того, тут plan sort, так что выполнение должно быть одинаково, разница только в фетчах может быть. В смысле, в выборке записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 20:26 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
чччДMikhail Tchervonenko, разве это одинаковые запросы? Код: sql 1.
и Код: sql 1.
И во втором запросе под where - 8 условий, в первом - 7. восьмое условие это я уже эксперементировал (and PC.POSTAL_CODE is not null). Если его убрать ситуация не меняется. а если с I_NAME передать строку 'Техт%' то по Вашему это другои запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 20:44 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
kdvMikhail Tchervonenko, если запросы одинаковые, то разницы в планах отдельно и в процедуре быть не может. кроме того, тут plan sort, так что выполнение должно быть одинаково, разница только в фетчах может быть. В смысле, в выборке записей. я тоже так всегда считал, но походу нет. Там кроме SORT ешё JOIN внутри. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 20:45 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoа если с I_NAME передать строку 'Техт%' то по Вашему это другой запрос? для оптимизатора - другой ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 21:19 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
dimitrMikhail Tchervonenkoа если с I_NAME передать строку 'Техт%' то по Вашему это другой запрос? для оптимизатора - другой есть способ это обойти? и почему не даёт указать план (точнее использовать определьнный индекс, который снаружи работает без проблем)? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 21:26 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoесть способ это обойти? Используй STARTING WITH. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 22:00 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail TchervonenkoчччДMikhail Tchervonenko, разве это одинаковые запросы? Код: sql 1.
и Код: sql 1.
И во втором запросе под where - 8 условий, в первом - 7. восьмое условие это я уже эксперементировал (and PC.POSTAL_CODE is not null). Если его убрать ситуация не меняется. а если с I_NAME передать строку 'Техт%' то по Вашему это другои запрос? ну ты вопрос задаешь, утверждаешь, что запросы одинаковые, а они разные. Как догадаться, что ты "экспериментировал" и т.п.? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 23:57 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovMikhail Tchervonenkoесть способ это обойти? Используй STARTING WITH. не помогло ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 00:31 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
непонятно как с этим бороться, проверил, в одной и той-же процедуре запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
выполняется 56 минут а запрос где заменил парамерт I_NAME просто на строку Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
16 миллисекунд замена like на STARTING WITH сушественно ничего не изменила. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 00:43 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoнепонятно как с этим бороться Читать http://www.ibase.ru/dataaccesspaths/ до просветления. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 01:13 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoя тоже так всегда считал, но походу нет. Там кроме SORT ешё JOIN внутри. во-первых, все-таки разные, а во-вторых, снаружи SORT, и похер, что там внутри. Результат будет отсортирован через память-временный файл, и выдан клиенту. Вот если бы снаружи был table ORDER index, то ... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 09:47 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoзамена like на STARTING WITH существенно ничего не изменила не верю (с) Что-то наверняка упускается или умалчивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 09:56 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Так бесполезно гадать, ни планов, ни примера. Михаил, выцепи свой DDL в воспроизводимый пример и выкладывай сюда. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 10:01 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, Код: 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.
ИХМО так запрос понятней и ошибку искать проще ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 10:05 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoпроверил, в одной и той-же процедуре запрос: выполняется 56 минут а запрос где заменил парамерт I_NAME просто на строку 16 миллисекунд А в процедуре тип у параметра I_NAME какой указываешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 10:55 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Евгений КилинА в процедуре тип у параметра I_NAME какой указываешь? I_NAME type of column ALTERNATENAME.NAME вот последний вариант процедуры Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 11:36 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
причем тормозит только этот вызов: select * from SEL_CITYANDPOSTCODES('RU',null,'Толь') эти 2 более менее в 16-30 миллисекунд укладываются (хотя индекс от POSTAL_CODE игнорируют почему то) select * from SEL_CITYANDPOSTCODES('RU','445',null) select * from SEL_CITYANDPOSTCODES('RU','445','Толь') ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 11:46 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko> причем тормозит только этот вызов: > select * from SEL_CITYANDPOSTCODES('RU',null,'Толь') > > эти 2 более менее в 16-30 миллисекунд укладываются > select * from SEL_CITYANDPOSTCODES('RU','445','Толь') Ну очевидна же разница. Попробуй этот же запрос без ХП, но с теми же параметрами. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 12:01 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
И вообще, если оно у тебя Not Null - нафига все эти пляски с бубном и проверками? Тупо передавай в параметр пустую строку и всё. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 12:06 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Тю, у тебя и Name Not Null (что логично и неудивительно). Нафига вообще эта ХП (только чтобы отовсюду дергать её, а не запрос тиражировать) ? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 12:08 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Симонов Денис, спасибо за идею, после явного указания Join нов все заработало как надо от and (:I_NAME is null or (AN.NAME STARTING WITH :I_NAME)) тоже пришлось отказаться, почему то это тоже мешало (в FB 2.5 такое прокатывало вроде) вот последний рабочий вариант в котором заработали планы и индексы как ожидалось: Код: 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. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 12:15 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамТю, у тебя и Name Not Null (что логично и неудивительно). Нафига вообще эта ХП (только чтобы отовсюду дергать её, а не запрос тиражировать) ? это не окончательный вариант, там ещё логика на гео координаты и языки будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 12:18 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko> это не окончательный вариант, там ещё логика на гео координаты и языки будет. Всё равно, эти танцы с Name, PostalCode и Null лишние. И вообще в коде > if (I_POSTAL_CODE is not null and (Trim(I_POSTAL_CODE) = '')) then > I_POSTAL_CODE = null; первая проверка лишняя. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 12:22 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
dimitrMikhail Tchervonenkoа если с I_NAME передать строку 'Техт%' то по Вашему это другой запрос? для оптимизатора - другой Есть в планах в 4-ке научить, как c (... or :param is null) делать вариативный план? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 13:58 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
afgmЕсть в планах в 4-ке научить, как c (... or :param is null) делать вариативный план? в тройке это УЖЕ ЕСТЬ. я же приводил пример - 20904144 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:06 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
afgm, а, понял. про Like :param и like 'text%' ? Не знаю, может и можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:07 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
kdvafgm, а, понял. про Like :param и like 'text%' ? Не знаю, может и можно. да, с like заработавший с STARTING WITH код работать перестаёт. Кстати, как кто выкручивается если переменная в запросе должна учавствовать только если её значение не null? Ситуация то довольно частая. в 2.5 прокатывало что то вроде (:PEREM is nill or (Field STARTING WITH :PEREM), и план работал нормально. В 3 ке, по крайней мере в этом примере план убивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:20 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
kdv> а, понял. про Like :param и like 'text%' ? Не знаю, может и можно. Не, он не про подстроку, он именно про "is null or". Я точно помню, что то ли трекер, то ли ДЕ говорил, что это то ли уже есть в тройке, то ли будет в 4-ке. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:27 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko> в 2.5 ... и план работал нормально. Ну здрасьте... Как раз не работал нормально, индекс не юзался. > В 3 ке, по крайней мере в этом примере план убивается. Что-то неочевидно. Ты хоть бы планы привёл что ли... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:32 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoкак кто выкручивается если переменная в запросе должна учавствовать только если её значение не null? а ведь папаша Дейт говорил, что null - зло. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 14:34 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамMikhail Tchervonenko> в 2.5 ... и план работал нормально. Ну здрасьте... Как раз не работал нормально, индекс не юзался. > В 3 ке, по крайней мере в этом примере план убивается. Что-то неочевидно. Ты хоть бы планы привёл что ли... ну в 2.5 по крайней мере нигде не столкнулся с проблемой производителяности на таких запросах (равно как и не использования подходявых индексов) А планы в случае внешних запросов я привёл выше. В случае запросов встроенных в процедуру, к стыду, признаюсь незнаю как выташить планы. IBExpert может для запросов из процедуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 15:21 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
kdvMikhail Tchervonenkoкак кто выкручивается если переменная в запросе должна учавствовать только если её значение не null? а ведь папаша Дейт говорил, что null - зло. ну в этом случае null для пустой строки. Нужно для маски где поиск производится по нескольким полям. Если поле не заполнено по нему поиск не производится. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 15:24 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko> ну в 2.5 по крайней мере нигде не столкнулся с ... не использования подходявых индексов) Странный ты человек... Ну возьми создай табличку с одним полем и сравни два запроса - select * from test where (name starting with :param) и select * from test where (:param is null) or (name starting with :param) И планы их сравни. > А планы в случае внешних запросов я привёл выше. Щас увидел. Но там всё равно ничего не очевидно. Давно бы уже выкинул всё лишнее и привёл нормальный пример. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 15:38 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
kdvafgm, а, понял. про Like :param и like 'text%' ? Не знаю, может и можно. Именно про такой случай. Вообще интересно, от таких выкрутасов в большом количестве оптимизатор не сойдёт с ума? Сейчас пока только два вида таких разветвлений, и в голову пока не приходит ничего подобного. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 16:06 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамMikhail Tchervonenko> ну в 2.5 по крайней мере нигде не столкнулся с ... не использования подходявых индексов) Странный ты человек... Ну возьми создай табличку с одним полем и сравни два запроса - select * from test where (name starting with :param) и select * from test where (:param is null) or (name starting with :param) И планы их сравни. > А планы в случае внешних запросов я привёл выше. Щас увидел. Но там всё равно ничего не очевидно. Давно бы уже выкинул всё лишнее и привёл нормальный пример. меня от этого остановило незнание как инициализировать значение :param вне процедуры (в sql editor IBExpert) хотя сейчас запустил с :param без определения и инициализации param и ошибку не получил, сразу начался запрос. Не пойму, почему FB не выдал ошибку, откуда взялся этот param если я его не описывал и не инициализировал? Или это уже IBExpert подшаманил? Или param это ключевое слово о котором я незнаю? Где туплю? разрыв шаблона какой то ... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 16:14 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoменя от этого остановило незнание как инициализировать значение :param вне процедуры (в sql editor IBExpert) хотя сейчас запустил с :param без определения и инициализации param и ошибку не получил, сразу начался запрос. Не пойму, почему FB не выдал ошибку, откуда взялся этот param если я его не описывал и не инициализировал? Или это уже IBExpert подшаманил? Или param это ключевое слово о котором я незнаю? Где туплю? разрыв шаблона какой то ... :) Ты какие-то ужасные ужасы говоришь и спрашиваешь. Жмёшь Ф9, появляется окно со списком параметров, вводишь значения (или ставишь галочку Null), жмёшь кнопку Enter. Всё. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 16:41 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Или что ты путаешься спросить? Как определяется тип параметра? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 16:42 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамИли что ты путаешься спросить? Как определяется тип параметра? где? в окне SQL Editor у IBExpress? Так там F9 это запуск на выполнение. А как определить параметр в процедуре я знаю и сам. Речь то о запросе выполняемом вне процедуры в окошке SQL Editor у IBExpert. План я вижу только в нём. Можно конечно и дедовским способом в isql или как он там зовётся, но там тоже как то надо этот параметр описать. Или мы говорим всё время о разном? например о окошке Procedure, тут F9 определяет параметры. Или в окошке Procedure можно запустить кусок кода и увидеть его план? Чем дальше в лес тем больше дров получается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 16:57 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 17:07 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
потому и спросил, откуда взялась эта переменнаь :PARAM если её нигде не определял. И почему запрос начал выполняться. По идее должен бал ругнуться типа неизвестная колонка PARAM или что то в этом роде ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 17:12 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko> в окне SQL Editor у IBExpress? Так там F9 это запуск на выполнение. Правильно. После чего появляется окошко для ввода значений параметров. Или у тебя не появляется? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 17:13 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Чёрт... Второй фейспалм за день... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 17:15 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамMikhail Tchervonenko> в окне SQL Editor у IBExpress? Так там F9 это запуск на выполнение. Правильно. После чего появляется окошко для ввода значений параметров. Или у тебя не появляется? нет, не появляется запрос выполняется как будто всё ок ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 17:24 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
И что возвращает ? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 17:27 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Тьфу, ну ты фраер. У тебя же параметр нигде не задействован. Вообще. Хотя и в этом случае должно появляться окно с запросом значения или ошибка о неизвестном типе параметра. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 17:30 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, блин, ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 17:32 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, но мог бы и ругнуться ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 17:34 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Это вы некомплектность скобок уже вторую страницу обсуждаете? Или я чего-то не понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 18:58 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Да кто в лес, кто по дрова, кто оптимизацию "param is null or field vs param", кто "param is null or field like/starting with param" (хотя по сути вид предиката не должен иметь значение, лишь бы индексировался). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 19:35 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovMikhail Tchervonenkoнепонятно как с этим бороться Читать http://www.ibase.ru/dataaccesspaths/ до просветления. Спасибо, интересная статья, с интересом прочитал. Думаю вернусь к ней ещё не раз. Жалко уже немного устаревшая (2006 год). Для закрепления материала немного не хватает в конце выжимки с выводами. Но это можно и самому сделать, даже полезно будет. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 01:12 |
|
FB3 Разная работа оптимизатора одного и того же запроса в процедуре и вне её
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, разумеется, кое-что в оптимизаторе добавилось, например hash join, но в отношении остальных методов доступа все осталось по прежнему. Это базовые операции, которые комбинируются, и все. Да, еще, конечно, поменялись коэффициенты "полезности" индексов, и т.д., в тройке это особенно заметно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2017, 03:05 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561340]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
66ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 204ms |
0 / 0 |