Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / индекс по функции / 25 сообщений из 33, страница 1 из 2
09.06.2015, 10:40
    #38979849
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
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

Что же я пропустил? Спасибо если кто откликнется
...
Рейтинг: 0 / 0
09.06.2015, 10:44
    #38979853
vaneque
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
сколько записей в таблице?
...
Рейтинг: 0 / 0
09.06.2015, 10:44
    #38979854
х.з.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
levonast хотя по литературе должно было: INDEX RANGE SCAN

а в этой литературе сказано как заполнить табличку нужным распределением данных?
...
Рейтинг: 0 / 0
09.06.2015, 10:44
    #38979855
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
около 3.5 млн
...
Рейтинг: 0 / 0
09.06.2015, 10:46
    #38979860
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
х.з.,

Этого не встречал. Просто повторил пример, который был приведен
...
Рейтинг: 0 / 0
09.06.2015, 10:49
    #38979868
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
...
Рейтинг: 0 / 0
09.06.2015, 10:49
    #38979871
vaneque
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
8-й оракл не успел застать, может там какие свои фишки...

Select NAME from MY_TABLE where upper(NAME)='IVAN'

а так какой план будет?)
...
Рейтинг: 0 / 0
09.06.2015, 10:53
    #38979876
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
vaneque,

В приведенной ссылке как раз говорится об oracle 8i
...
Рейтинг: 0 / 0
09.06.2015, 10:53
    #38979878
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
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 ...
...
Рейтинг: 0 / 0
09.06.2015, 10:56
    #38979884
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
Elic,

Пробовал:

QUERY_REWRITE_ENABLED = ТRUE

QUERY_REWRITE_INTEGRITY = TRUSTED

Не помогло
...
Рейтинг: 0 / 0
09.06.2015, 11:04
    #38979895
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
levonastПробовал:Да не пробовать надо, а выкинуть этот хлам на помойку.
...
Рейтинг: 0 / 0
09.06.2015, 11:16
    #38979912
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
Elic,

Абсолютно согласен.
Непонятно только одно: почему индекс создается нормально, а пользоваться им не удается.
Сказали бы сразу, что этот тип индекса не поддерживается.
...
Рейтинг: 0 / 0
09.06.2015, 11:18
    #38979914
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
levonastСказали бы сразу, что этот тип индекса не поддерживается.Ты просто не умеешь его готовить. А мы забыли и не захотим вспоминать.
...
Рейтинг: 0 / 0
09.06.2015, 12:14
    #38980020
ten
ten
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
levonastЭтого не встречал. Просто повторил пример, который был приведен
В примере вставляется всего тысяча строк, так что откуда 3,5 миллиона? :)
Покажи как именно заполнял тестовую табличку.
...
Рейтинг: 0 / 0
09.06.2015, 12:23
    #38980030
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
ten,

Тестовая таблица была задолго до создания индекса.
Далее я построил индекс и т.д. как описано в первом сообщении.
...
Рейтинг: 0 / 0
09.06.2015, 12:24
    #38980031
ten
ten
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
levonastТестовая таблица была задолго до создания индекса.
На 99% это и является причиной неиспользования индекса, а если точнее, то те данные, которые лежат в таблице.
...
Рейтинг: 0 / 0
09.06.2015, 12:29
    #38980039
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
ten,
Если я провильно понял для работы с индексом по функции нужно:
а. создать таблицу
б. создать индекс
и только после этого начать ее заполнении.
При уже заполненной таблице индекс по функции не работает ?????
...
Рейтинг: 0 / 0
09.06.2015, 12:32
    #38980046
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
levonastPersonal ORACLE 8i Release 8.1.6.0.0
. . .
Спасибо если кто откликнетсяС тех пор прошло уже 15 лет...

Я уже забыл намного больше, чем ты знаешь... :-)

P.S. У меня на шкафу стоит Вычислительная машина "Быстрица-2".
Не желаете ли изучить его фичи и поискать баги? :-)

YouTube Video
...
Рейтинг: 0 / 0
09.06.2015, 12:36
    #38980052
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
SQL*Plus,
Да, кстати по БЫСТРИЦЕ -2 то же пара вопросов, спасибо что напомнили.
При инсталяции ОРАКЛ 8 на БЫСТРИЦУ -2, что то не ладилось.
Может поможете.
...
Рейтинг: 0 / 0
09.06.2015, 12:41
    #38980057
нлс сортир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
levonastПробовал:

QUERY_REWRITE_ENABLED = ТRUE

QUERY_REWRITE_INTEGRITY = TRUSTED

Не помоглоштудируй соответствующую версии доку. там могли упоминаться и другие пререквесты типа обязательности хинта.
...
Рейтинг: 0 / 0
09.06.2015, 12:43
    #38980062
ten
ten
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
levonastЕсли я провильно понял
Нет. Скорее всего причиной неиспользования индекса является либо распределение данных в таблице, которое делает невыгодным использование индекса, либо отсутствие/неправильная статистика этого распределения.
А вообще для начала смотрите:
FAQ: Основные причины ошибок CBO.
Google
STFF
...
Рейтинг: 0 / 0
09.06.2015, 12:47
    #38980067
levonast
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
Спасибо всем.
Не смею далее отвлекать своими недостойными вопросами
...
Рейтинг: 0 / 0
09.06.2015, 17:20
    #38980369
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
levonastСпасибо всем.
Не смею далее отвлекать своими недостойными вопросами
не уверен, но может быть проблема и из-за Personal
там были ограничения

если добавить хинт
/*+ use_index(t MY_IND) */
то тож не использует?

.....
stax
...
Рейтинг: 0 / 0
10.06.2015, 02:05
    #38980628
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
До 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.
demo56> create table t1 as select * from all_objects;

Table created.

demo56> create index t1_idx on t1(upper(object_name));

Index created.

demo56> explain plan for select * from t1 where upper(object_name)='DUAL';

Explained.

demo56> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------

--------------------------------------------------------------------
| Id  | Operation            |  Name       | Rows  | Bytes | Cost  |
--------------------------------------------------------------------
|   0 | SELECT STATEMENT     |             |       |       |       |
|*  1 |  TABLE ACCESS FULL   | T1          |       |       |       |
--------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(UPPER("T1"."OBJECT_NAME")='DUAL')

Note: rule based optimization

14 rows selected.

demo56> exec dbms_stats.gather_table_stats(user, 'T1', cascade=>true)

PL/SQL procedure successfully completed.

demo56> explain plan for select * from t1 where upper(object_name)='DUAL';

Explained.

demo56> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------

---------------------------------------------------------------------------
| Id  | Operation                   |  Name       | Rows  | Bytes | Cost  |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |             |     2 |   186 |     4 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T1          |     2 |   186 |     4 |
|*  2 |   INDEX RANGE SCAN          | T1_IDX      |     2 |       |     3 |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access(UPPER("T1"."OBJECT_NAME")='DUAL')

Note: cpu costing is off

15 rows selected.

...
Рейтинг: 0 / 0
10.06.2015, 09:04
    #38980706
х.з.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индекс по функции
Вячеслав ЛюбомудровДо 10g надо было обязательно собирать статистику
Слава где-то откопал персональный 8 оракл? ;)

но в общем-то я хотел сказать другое: если последний совет не поможет, можно выложить полный листинг создания, заполнения таблицы и т.д. И может быть тебе подскажут чего ты забыл сделать чтобы индекс подхватился.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / индекс по функции / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]