powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Составной индекс
4 сообщений из 4, страница 1 из 1
Составной индекс
    #40097389
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе времени суток. Пытаюсь создать составный индекс:

Код: plaintext
1.
2.
3.
4.
5.
6.
 create index I_INDEX on TABLE (CASE 
      WHEN COLIMN_1 > 100000000000000001
           THEN (COLIMN_1, COLUMN_PRIMARY_KEY)
      ELSE
           NULL
      END);


но получаю ошибку:
ORA-00907: missing right parenthesis.

Как я могу создать составной индекс по условиям?
...
Рейтинг: 0 / 0
Составной индекс
    #40097393
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
SQL> CREATE TABLE killme_tab(a number, b date);
Table KILLME_TAB created.

SQL> create index killme_tab#INDEX on KILLME_TAB(DECODE(SIGN(a-100000000000000001), 1,a, NULL), b);
Index KILLME_TAB#INDEX created.
...
Рейтинг: 0 / 0
Составной индекс
    #40097399
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
Код: plsql
1.
2.
3.
4.
5.
SQL> CREATE TABLE killme_tab(a number, b date);
Table KILLME_TAB created.

SQL> create index killme_tab#INDEX on KILLME_TAB(DECODE(SIGN(a-100000000000000001), 1,a, NULL), b);
Index KILLME_TAB#INDEX created.



Спасибо. Подскажите, может быть, еще такой вопрос: если таблица является IOT, и проиндексирован столбец (column_1), не являющийся ключем, как заставить запрос where column_1 = some_value использовать индекс, а не INDEX FULL SCAN ?
...
Рейтинг: 0 / 0
Составной индекс
    #40097407
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
Код: plsql
1.
2.
3.
4.
5.
SQL> CREATE TABLE killme_tab(a number, b date);
Table KILLME_TAB created.

SQL> create index killme_tab#INDEX on KILLME_TAB(DECODE(SIGN(a-100000000000000001), 1,a, NULL), b);
Index KILLME_TAB#INDEX created.



А тут еще бабушка надвое гадала. Исходя из ELSE NULL есть не индексирует совсем:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE INDEX I_INDEX
  ON TABLE(
           CASE 
               WHEN COLIMN_1 > 100000000000000001 THEN COLIMN_1
           END,
           CASE 
               WHEN COLIMN_1 > 100000000000000001 THEN COLUMN_PRIMARY_KEY
           END
          );
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Составной индекс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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