Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Составной индекс только по определенному значению отдельного поля / 13 сообщений из 13, страница 1 из 1
09.12.2016, 16:48
    #39363656
Avotge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
Необходимо сделать b-tree индексы типа
Код: plsql
1.
field1, field2, field3, ....... field7


Но т.к. индексируемые таблицы относит. большие, 10-ки млн записей,
то было бы хорошо имхо сделать этот индекс только для записей, у которых например field2 in (2, 3), что уменьшило бы его объем раза в два.
Можно написать индекс по функции и для каждого поля индекса прописать
Код: plsql
1.
2.
3.
4.
5.
6.
case when field2 in (2, 3) then field1 end,
case when field2 in (2, 3) then field2 end,
case when field2 in (2, 3) then field3 end,
case when field2 in (2, 3) then field4 end
....
case when field2 in (2, 3) then field7 end


Не придумал, но можно ли сделать то же самое, как-то изящнее, не прописывая условие для каждого поля?
...
Рейтинг: 0 / 0
09.12.2016, 16:52
    #39363660
Avotge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
На самом деле условия могут быть и сложнее, а не просто field2 in (2,3), а например
Код: plsql
1.
field2 in (2,3) and regexp_instr(field3, '.....')>0


Возможно, стоит интересующие записи даже просто выносить в отдельную таблицу.
Но может есть вариант задать условие для записей, которые надо проиндексировать только один раз?
...
Рейтинг: 0 / 0
09.12.2016, 16:52
    #39363661
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
Avotgeможно ли сделать то же самое, как-то изящнее, не прописывая условие для каждого поля?

Партиционированная таблица + локальный индекс.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.12.2016, 16:58
    #39363675
Avotge
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
Dimitry SibiryakovПартиционированная таблица + локальный индекс.
Вариант. Но патиционирования у нас нет (плюс именно поэтому итак кучка таблиц, представляющих собой как бы патиции ))
Но суть ясна. Можно сделать отдельную таблицу конечно, куда сваливать нужные записи.
...
Рейтинг: 0 / 0
09.12.2016, 18:53
    #39363792
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
AvotgeНа самом деле условия могут быть и сложнее, а не просто field2 in (2,3), а например
Код: plsql
1.
field2 in (2,3) and regexp_instr(field3, '.....')>0


Возможно, стоит интересующие записи даже просто выносить в отдельную таблицу.
Но может есть вариант задать условие для записей, которые надо проиндексировать только один раз?
сложно будет использовать в запросе, ведь формулу надо повторить во where

как +1 вариант, сделать матвью и его проиндексировать

......
stax
...
Рейтинг: 0 / 0
10.12.2016, 08:19
    #39363976
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
stax..сложно будет использовать в запросе, ведь формулу надо повторить во whereНачиная с 11g легко - виртуальные колонки.
...
Рейтинг: 0 / 0
10.12.2016, 11:29
    #39364008
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
Elicstax..сложно будет использовать в запросе, ведь формулу надо повторить во whereНачиная с 11g легко - виртуальные колонки.

можно и без виртуальных, добавить в таблицу колонку, заполнять триггером, проиндексировать

.....
stax
...
Рейтинг: 0 / 0
10.12.2016, 11:36
    #39364009
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
А дальше?
...
Рейтинг: 0 / 0
10.12.2016, 11:49
    #39364017
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
Вячеслав ЛюбомудровА дальше?
дальше использовать клонки в запросах

.....
stax
...
Рейтинг: 0 / 0
10.12.2016, 23:08
    #39364230
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
stax..добавить в таблицу колонкуНапрасная трата места ... stax..заполнять триггером... и времени.
...
Рейтинг: 0 / 0
11.12.2016, 06:17
    #39364285
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
stax..Вячеслав ЛюбомудровА дальше?
дальше использовать клонки в запросах

.....
staxЦель, напомню, состояла в "что уменьшило бы его объем раза в два"
С секционированием (по этой, виртуальной или заполняемой триггером колонке), возможно, это бы и помогло (с 11g UNUSABLE-сегмент индекса не занимает места)
Но стоит ли оно того?
...
Рейтинг: 0 / 0
13.12.2016, 16:01
    #39365871
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
Elicstax..добавить в таблицу колонкуНапрасная трата места ... stax..заполнять триггером... и времени.
я согласен
наскоко помню в древних версиях оракля так и поступал
при создании fbi индекса создавал невидимую виртуальную колонку
з 11-ки разрешили фичу пользователям

.....
stax
...
Рейтинг: 0 / 0
13.12.2016, 16:06
    #39365878
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной индекс только по определенному значению отдельного поля
Вячеслав Любомудровstax..пропущено...

дальше использовать клонки в запросах

.....
staxЦель, напомню, состояла в "что уменьшило бы его объем раза в два"
С секционированием (по этой, виртуальной или заполняемой триггером колонке), возможно, это бы и помогло (с 11g UNUSABLE-сегмент индекса не занимает места)
Но стоит ли оно того?
я так понял цели две
1) уменьшить обьем индекса, он и уменьшится за счет null значений
2) удобство, если создавать индекс без использования "віртуальных" колонок,
то придется выражение (case) в точности повторять в операторе

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


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