Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1
  • 2

ТЕМА:

index desc order в Oracle 12 года 9 мес. назад #2934

create table test (id number(2), num number(2));

create index test_idx on test (id desc, num desc);

select COLUMN_NAME, DATA_TYPE from user_tab_cols where TABLE_NAME='TEST';

COLUMN_NAME DATA_TYPE

ID NUMBER
NUM NUMBER
SYS_NC00003$ RAW
SYS_NC00004$ RAW

select * from user_ind_columns where TABLE_NAME='TEST';

INDEX_NAME COLUMN_NAME COLUMN_POSITION CHAR_LENGTH DESC




TEST_IDX SYS_NC00003$ 1 34 DESC
TEST_IDX SYS_NC00004$ 2 34 DESC

Ну и вопрос: зачем собственно он создает эти столбцы RAW и что он в них хранит?? И в догонку тоже интересный фактик...

select INDEX_NAME, index_type from user_indexes where table_name = 'TEST';

INDEX_NAME INDEX_TYPE

TEST_IDX FUNCTION-BASED NORMAL

И это при QUERY_REWRITE_ENABLED = FALSE...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: index desc order в Oracle 12 года 9 мес. назад #2935

  • Doc
  • Doc аватар
  • Не в сети
  • Захожу иногда
  • Захожу иногда
  • Сообщений: 41
  • Спасибо получено: 0
SQL> create table test (id number(2), num number(2));



Table created.



SQL> create index test_idx on test (id desc, num desc);



Index created.



SQL> select COLUMN_NAME, DATA_TYPE from user_tab_columns where TABLE_NAME='TEST';



COLUMN_NAME                    DATA_TYPE

------------------------------ ------------------------------


NUM                            NUMBER

ID                             NUMBER



SQL> select * from user_ind_columns where TABLE_NAME='TEST';



INDEX_NAME                     TABLE COLUMN_NAME     COLUMN_POSITION COLUMN_LENGTH DESC

------------------------------ ----- --------------- --------------- ------------- ----


TEST_IDX                       TEST  SYS_NC00003$                  1            34 DESC

TEST_IDX                       TEST  SYS_NC00004$                  2            34 DESC



SQL> select INDEX_NAME, index_type from user_indexes where table_name = 'TEST';



INDEX_NAME                     INDEX_TYPE

------------------------------ ---------------------------


TEST_IDX                       FUNCTION-BASED NORMAL

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: index desc order в Oracle 12 года 9 мес. назад #2936

Интересно, почему в девятке появляются (видны в user_tab_columns) дополнительные столбцы, а в восьмёрке - нет, хотя видны в user_ind_columns?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: index desc order в Oracle 12 года 9 мес. назад #2937

  • Doc
  • Doc аватар
  • Не в сети
  • Захожу иногда
  • Захожу иногда
  • Сообщений: 41
  • Спасибо получено: 0
В 9i представления %_TAB_COLUMNS скрытые колонки тоже не покажут, покажут представления %_TAB_COLS. ИМХО некоторое количество фич, наподобе descending, function-based indexes, может еще чего, реализовано в полном соответствии с одним из правил Кодда для реляционных БД, по которому "вся информация должна определяться строго как значения таблиц". Просто это работа, кемо-то уже сделанная, можно воспользоваться ее результатами, можно написать свое.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: index desc order в Oracle 12 года 9 мес. назад #2938

Да собственно что "ТАК НАДО" я догадался...
А вот, что же в этих RAW столбцах лежит? Какая формула у это вычисляемого столбца?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: index desc order в Oracle 12 года 9 мес. назад #2939

  • Gwen
  • Gwen аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 5
  • Спасибо получено: 0
В 8 и ниже index desc физически хранится, как обычный упорядоченный по возрастанию индекс. Просто при запросах он читается снизу вверх. А в 9 эти индесы действительно отсортированы в обратном порядке. А для этого и появляется странные функции. Сами определения функций есть в dba_ind_expressions.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.212 секунд