|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 14:33 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
А кто заставляет использовать execute immediate? Юзай dbms_sql. Сделай ассоциативный массив с ключем ia.INDEXSCHEMA || '.' || ia.INDEXNAME и содержащий номер открытого и распарсенного курсора (с использованием placeholder-ов) и тебе останется только прибиндить нужные значения и выполнить его. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 08:00 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, Аналогично MEMBER FUNCTION ODCIINDEXFETCH - принято ! А насколько это применимо к таким объемам (700 млн.) Вы пробывали - негатив есть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 19:21 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
Не понял, как мой ответ переехал в вопрос? А мой пост удалился? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 23:13 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
Sayan Malakshinov Не понял, как мой ответ переехал в вопрос? А мой пост удалился? У меня удален почти весь первичный вопрос Если не затруднит повторите плис Ваши сомнения- комментарии ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 13:21 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
Общий комментарий: динамический SQL в имплементации ODCIIndex нужен лишь в случае, когда делаете инструмент (универсальное решение, предполагающее повторное использование без какой-либо правки). Если же делаете решение локальное, не предполагающее тиражирования - то динамика нужна только для DDL (ODCIIndexCreate и иже с ним). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2021, 13:28 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
Доброго дня господа ! Усложнил процесс - выбираю физ записи удовлетворяющие условию и храню ТОЛЬКО их в индексе ' where KEY1+KEY2+KEYn>0' ; Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Аналогичным путем необходимо изменить процедуру на вставку одной записи Как правильно достучаться до необходимых полей таблицы Синтетически выглядит так - фактическое выполнение невозможно Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2021, 13:13 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
HOME_X Как правильно достучаться до необходимых полей таблицы Проиндексировать KEY1+KEY2+KEYn ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2021, 14:18 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
andrey_anonymous HOME_X Как правильно достучаться до необходимых полей таблицы Проиндексировать KEY1+KEY2+KEYn KEY "NNNN" !!! - там 15 полей, которые совершенно не нужны. Может есть более рацион. варианты ? P.S. - можно представить как ВЫРАЖЕНИЕ индекса (SC,KEY1+KEY2+.....+KEYn) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2021, 15:21 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
HOME_X KEY "NNNN" !!! - там 15 полей, которые совершенно не нужны. Не нужны - не индексируйте, в чем проблема? Смысл в том, что индекс не должен лазить в таблицу, на которой построен - вся необходимая информация должна попадать в него согласно декларации. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2021, 16:50 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
andrey_anonymous, Решил задачу через объектный тип - ниже приложено --------------------------------------------------------------- А как решить это через массив ? Имею в виду тип SYS.ODCIColInfoList dbms_output.put_line(iA.INDEXCOLS(???).COLNAME); И предложение вызова create index EMPLOYEES_DELAY on EMPLOYEES(SALARY,KEY1,KEY2) indextype is CARD_DELAY_INDEXTYPE; Как правильно декларировать сигнатуру ? Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 10:46 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
HOME_X create index EMPLOYEES_DELAY on EMPLOYEES(SALARY,KEY1,KEY2) indextype is CARD_DELAY_INDEXTYPE; Составной ODCIIndex я делал только через вспомогательный объектный тип Код: plsql 1.
Но в Вашем случае проще всего было, насколько понимаю, обойтись Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 10:31 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
andrey_anonymous create index EMPLOYEES_DELAY on EMPLOYEES(SALARY+KEY1+KEY2) indextype is CARD_DELAY_INDEXTYPE; Не совсем так - это пример Хотел бы видеть такую реализацию create index EMPLOYEES_DELAY on EMPLOYEES(SALARY,KEY1+KEY2) indextype is CARD_DELAY_INDEXTYPE; andrey_anonymous Составной ODCIIndex я делал только через вспомогательный объектный тип Так реализовал. и понимаю что других вариантов нет ? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 13:53 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
HOME_X других вариантов нет ? По крайней мере я о них не знаю. Можно, конечно, на ADT попробовать, но не советовал бы без крайней необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 14:46 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
andrey_anonymous Можно, конечно, на ADT попробовать, но не советовал бы без крайней необходимости. А что Вы имеете в виду ? Изменить структуру индексируемой таблицы ? Переведя ее на один/несколько пользов. типов Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2021, 20:02 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
HOME_X andrey_anonymous Можно, конечно, на ADT попробовать, но не советовал бы без крайней необходимости. А что Вы имеете в виду ? ANYDATA/ANYDATASET/ANYTYPE или хакнуть "<ADT_1>" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2021, 13:38 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
andrey_anonymous ANYDATA/ANYDATASET/ANYTYPE или хакнуть "<ADT_1>" Не понял Вас - уточните Ваше предложение Я хотел бы видеть такое SQL предложение = (SALARY,KEY1+KEY2) Код: plsql 1.
Без пользовательского типа все равно не обойтись MyIdxObj Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Я хотел избавиться от типа MyIdxObj Или Вы имели в виду что-то другое ? приведите пожалуйста пример ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2022, 21:18 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров А кто заставляет использовать execute immediate? Юзай dbms_sql. Сделай ассоциативный массив с ключем ia.INDEXSCHEMA || '.' || ia.INDEXNAME и содержащий номер открытого и распарсенного курсора (с использованием placeholder-ов) и тебе останется только прибиндить нужные значения и выполнить его. Здесь НЕ все понятно ! как и чем определить момент окончания процесса. Вариант 1 - пошла вставка записей - событие ODCIINDEXINSERT отрабатывает запись, за записью Пишем в массив, когда возникла ПОСЛЕДНАЯ запись - делаем вставку в таблицу Как определить эту последную запись ? Вариант 2 Создать и контролировать курсором курсор можно через ПЕРВЫЙ запуск стат. функцию контролировать через условие > 0 и делать вставку, а как его закрыть после окончания процесса вставки ? Каким событием-процедурой определить этот факт ПОСЛЕДНЕЙ записи ? -------------------------------------------------------------------------------------- member function OdciIndexClose (Env SYS.ODCIEnv) Return Number Для других целей и работает для SELECT при уже созданном объекте. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2022, 12:05 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
HOME_X - пошла вставка записей - событие ODCIINDEXINSERT отрабатывает запись, за записью Пишем в массив, когда возникла ПОСЛЕДНАЯ запись - делаем вставку в таблицу Как определить эту последную запись ? Возможно, подойдет batch-интерфейс odciIndexInsert? Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2022, 11:40 |
|
Регламент или Extensible Indexing
|
|||
---|---|---|---|
#18+
andrey_anonymous, Спасибо за подсказку Andrey - отработал ! Прошу ответить на вопросы Пример 1 - выполнился ожидаемо Вопрос - как и чем контролируется размерность массива К ВСТАВКЕ См. результат консоли - массив из 300 строк - разрезан на части с тремя обращениями 200-55-45 Основаня проблема - когда делать execute immediate ? (Частями делать ?) Код: plsql 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. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185.
-----Консоль запроса ------------ Drop Create Insert row Insert array=200 Insert array=55 Insert array=45 Execute ------------------------------------ Вопрос 2 в качестве индексируемого поля я использую переменную объектного типа (точнее мне надо анализировать несколько полей , я их в продуктиве сведу в тип RECORD - отсюда обьект. тип) попытался реализовать с типом - но событие Insert -ARRAY не реагирует , допускаю что неверно установил опцию WITH ARRAY DML(Number2,Number2List) Документация Код: plsql 1. 2. 3. 4. 5.
Взгяните плис - пользовательский тип Number2, Number2List Код: plsql 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. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185.
-----Консоль запроса ------------ Drop Create Insert row ................. Insert row Execute ------------------------------------ Заранее благодарен ! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2022, 11:59 |
|
|
start [/forum/topic.php?fid=52&msg=40131655&tid=1879547]: |
0ms |
get settings: |
25ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
362ms |
get tp. blocked users: |
2ms |
others: | 2852ms |
total: | 3325ms |
0 / 0 |