|
|
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
Personal ORACLE 8i Release 8.1.6.0.0 1. создаю индекс по функции: Create index MY_IND on MY_TABLE(upper(NAME)) Index created 2. затем проверяю: Select * from MY_TABLE where upper(NAME)='IVAN' 3. смотрю Еxplain Plan: TABLE ACCESS FULL, хотя по литературе должно было: INDEX RANGE SCAN Что же я пропустил? Спасибо если кто откликнется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:40 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
сколько записей в таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:44 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonast хотя по литературе должно было: INDEX RANGE SCAN а в этой литературе сказано как заполнить табличку нужным распределением данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:44 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
х.з., Этого не встречал. Просто повторил пример, который был приведен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:46 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
х.з., вот ссылка: http://www.interface.ru/fset.asp?Url=/oracle/0005.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:49 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
8-й оракл не успел застать, может там какие свои фишки... Select NAME from MY_TABLE where upper(NAME)='IVAN' а так какой план будет?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:49 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
vaneque, В приведенной ссылке как раз говорится об oracle 8i ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:53 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonast8.1.6Древнота... RTFM QUERY_REWRITE_ENABLED (FAQ) : автор... Query rewrite is disabled by default. ... ... If this parameter is set to FALSE, Oracle will not use function-based indexes ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:53 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
Elic, Пробовал: QUERY_REWRITE_ENABLED = ТRUE QUERY_REWRITE_INTEGRITY = TRUSTED Не помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 10:56 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonastПробовал:Да не пробовать надо, а выкинуть этот хлам на помойку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 11:04 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
Elic, Абсолютно согласен. Непонятно только одно: почему индекс создается нормально, а пользоваться им не удается. Сказали бы сразу, что этот тип индекса не поддерживается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 11:16 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonastСказали бы сразу, что этот тип индекса не поддерживается.Ты просто не умеешь его готовить. А мы забыли и не захотим вспоминать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 11:18 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonastЭтого не встречал. Просто повторил пример, который был приведен В примере вставляется всего тысяча строк, так что откуда 3,5 миллиона? :) Покажи как именно заполнял тестовую табличку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 12:14 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
ten, Тестовая таблица была задолго до создания индекса. Далее я построил индекс и т.д. как описано в первом сообщении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 12:23 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonastТестовая таблица была задолго до создания индекса. На 99% это и является причиной неиспользования индекса, а если точнее, то те данные, которые лежат в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 12:24 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
ten, Если я провильно понял для работы с индексом по функции нужно: а. создать таблицу б. создать индекс и только после этого начать ее заполнении. При уже заполненной таблице индекс по функции не работает ????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 12:29 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonastPersonal ORACLE 8i Release 8.1.6.0.0 . . . Спасибо если кто откликнетсяС тех пор прошло уже 15 лет... Я уже забыл намного больше, чем ты знаешь... :-) P.S. У меня на шкафу стоит Вычислительная машина "Быстрица-2". Не желаете ли изучить его фичи и поискать баги? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 12:32 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
SQL*Plus, Да, кстати по БЫСТРИЦЕ -2 то же пара вопросов, спасибо что напомнили. При инсталяции ОРАКЛ 8 на БЫСТРИЦУ -2, что то не ладилось. Может поможете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 12:36 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonastПробовал: QUERY_REWRITE_ENABLED = ТRUE QUERY_REWRITE_INTEGRITY = TRUSTED Не помоглоштудируй соответствующую версии доку. там могли упоминаться и другие пререквесты типа обязательности хинта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 12:41 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonastЕсли я провильно понял Нет. Скорее всего причиной неиспользования индекса является либо распределение данных в таблице, которое делает невыгодным использование индекса, либо отсутствие/неправильная статистика этого распределения. А вообще для начала смотрите: FAQ: Основные причины ошибок CBO. STFF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 12:43 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
Спасибо всем. Не смею далее отвлекать своими недостойными вопросами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 12:47 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonastСпасибо всем. Не смею далее отвлекать своими недостойными вопросами не уверен, но может быть проблема и из-за Personal там были ограничения если добавить хинт /*+ use_index(t MY_IND) */ то тож не использует? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2015, 17:20 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
До 10g надо было обязательно собирать статистику Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 02:05 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровДо 10g надо было обязательно собирать статистику Слава где-то откопал персональный 8 оракл? ;) но в общем-то я хотел сказать другое: если последний совет не поможет, можно выложить полный листинг создания, заполнения таблицы и т.д. И может быть тебе подскажут чего ты забыл сделать чтобы индекс подхватился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 09:04 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
Не, это 9-ка Но и для 8-ки это было обязательнымOracle8i Administrator's Guide Release 2 (8.1.6) Managing Indexes Creating a Function-Based IndexYou must have the following initialization parameters defined to create a function-based index: QUERY_REWRITE_INTEGRITY must be set to TRUSTED QUERY_REWRITE_ENABLED must be set to TRUE COMPATIBLE must set to 8.1.0.0.0 or a greater value Additionally, to use a function-based index: The table must be analyzed after the index is created. The query must be guaranteed not to need any NULL values from the indexed expression, since NULL values are not stored in indexes. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 09:13 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Спасибо Вам большое, видимо действительно 'проблема и из-за Personal '. Будем искать другие пути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 09:26 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
Ты статистику собирал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 09:34 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Нет. Но я сделал все другие рекомендации данные выше. Не помогло. Думаю: 1. сделать обычный индекс по нужному полю, 2. для ранее введеных данных сделать: Update ... set name=upper(name) 3. для последующих вводов перед Insert перевести в upper(name) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2015, 09:45 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
проверьте для начала не сталкиваетесь ли вы с ограничениями по использования функционального индекса. (данный индекс используется только посредством CBO при наличии статистики) список ограничений можно найти здесь: http://docs.oracle.com/cd/A87860_01/doc/appdev.817/a76939/adg06idx.htm#7085 если с ограничениями все в порядке, проверьте статистику - есть ли гистограммы по столбцу - селективность индекса, фактор кластеризации http://docs.oracle.com/cd/A87860_01/doc/server.817/a76992/stats.htm#27514 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2015, 19:58 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
levonast, чему равно значение параметра OPTIMIZER_MODE ? Вроде как, для перехода в режим CBO должно быть все что угодно, только не RULE. ну и про статистику тебе уже два раза говорили, скажу третий. FBI - фича, требующая CBO. CBO работает только при наличии статистики по объектам запроса. Нет статистики - работает RBO. RBO понятия не имеет о существовании FBI и банально не умеет использовать его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2015, 04:28 |
|
||
|
индекс по функции
|
|||
|---|---|---|---|
|
#18+
не уверен, что в тему Том Кайт в книге по 8-ому Оракл, описывая индекс по функции, писал еще и substr авторДавайте посмотрим, как добавление индекса по функции позволит ускорить работу. Сначала создадим индекс следующим образом: Код: plsql 1. 2. 3. 4. Обратите внимание,что в этом операторе создания индекса используется функция SUBSTR. Дело в том,что индексируется функция,возвращающая строку.Если бы индексировалась функция,возвращающая число или дату,эта функция SUBSTR не понадобилась бы.Применять функцию SUBSTR к заданным пользователем функциям, возвращающим строки,необходимо потому, что они возвращают данные типа VARCHAR2(4000) и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2015, 07:23 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1890885]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 405ms |

| 0 / 0 |
