Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Порядок расположения колонок составного индекса  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2042
Задача: создать индекс из нескольких двух колонок таблицы.
Вопрос: как неинтуитивным путем понять в каком порядке их расположить?
7 фев 17, 13:01    [20188446]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
AmKad
Member

Откуда:
Сообщений: 4687
--Eugene--,

Почитай Льюиса, прокачаешь свою интуицию.
7 фев 17, 13:02    [20188458]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17350
Для начала, придумай запросы, которые будут типичны для этой таблички и которым понадобится индекс
Если всегда на равенство обоих колонок, то выбирай первую менее селективной и включи COMPRESS
7 фев 17, 13:06    [20188481]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
AmKad
Member

Откуда:
Сообщений: 4687
Вячеслав Любомудров
Если всегда на равенство обоих колонок, то выбирай первую менее селективной и включи COMPRESS
А я бы в таком случае выбрал в качестве первой наиболее селективную.
7 фев 17, 13:09    [20188517]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17350
А смысл?
7 фев 17, 13:21    [20188592]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
Солидарен с AmKad
Guest
Вячеслав Любомудров
А смысл?


Мало - ли, вдруг по высоко-селективному браться нет-нет, а таки придется. А низкоселективному индекс как мертвому припарка.
7 фев 17, 13:41    [20188750]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
постит очевидное
Guest
С первым малоселективным можно INDEX SKIP SCAN делать
7 фев 17, 13:51    [20188802]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2042
Товагищи, подскажите как вычислить селективность колонки для данного случая (с учетом перекоса данных, если таковой закономерен)?
7 фев 17, 13:58    [20188849]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17350
Ну дык по-этому и был вопрос по поводу запросов
Также, понятно, что для уникального столбца второй нужен только для невляпывания в саму табличку -- тут естественно, первым уникальный, а лучше вообще IOT

Но, вот скажем, табличка тех же платежей/звонков и т.п. где есть дата и контора
За один день у определенной конторы в среднем было 10 платежей, но с другой стороны там 10000 контор (из которых как правило, большая часть мертвых), а в день совершается 10000 платежей/звонков (но даты с секундами) -- в одну секунду в среднем 8.
Дата здесь селективней, вот только в здравом уме никто не сделает индекс (дата, контора)
Наверное, таки, небольшая подмена понятий :-)

Ну и естественно, тестирование -- лучший арбитр
7 фев 17, 14:03    [20188875]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17350
Короче, я опять какую-то херню понес

Надо интересоваться у ТС, что есть, как собирается обращаться и что, собственно говоря, хочет получить
7 фев 17, 14:08    [20188900]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2042
Ёпт, я думал, есть какой-то общий подход..
7 фев 17, 14:18    [20188943]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5598
--Eugene--,

Да, выглядит он так - почитай Льюиса, сначала поставь колонки по убыванию/возрастанию селективности, потом потестируй на реальных запросах по логике твоего бизнеса и выбери наиболее удобный лдя тебя вариант.
7 фев 17, 14:54    [20189161]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 17350
Еще раз -- самое главное, какие запросы туда будут, с какими предикатами и что ты от этого индекса ждешь
7 фев 17, 14:57    [20189187]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 6015
IMHO если индексы построили правильно (реально по тем двум колонкам, которые нужны) и запросов, где поиск идет по одной из колонок нет - то IMHO в 90% случаев, в реальной системе, будет "фиолетово".

Т.к. в большинстве случае, ошибаются уже на первом шаге, выбор индексов и колонок которые требуются, то система будет "стоять колом" в независимости от порядка полей )))

Лично я этим никогда не заморачивался, а порядок колонок указывал в "интиетивно понятном" виде )))

В тех 1-10% процентов случаев, где это важно - очень большая таблица или очень специфическое распределение данных или очень специфические запросы/план, такой выбор по "общим правилам" сформулированым на форуме все равно не сделать. Будет очень сильно зависит от конкретной проблемы с производительностью.

IMHO & AFAIK
7 фев 17, 15:30    [20189360]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
Vint
Member

Откуда: Таган-москва
Сообщений: 4434
Leonid Kudryavtsev,
+1
но еще хочется добавить, иногда индексы приходиться убивать чтобы другие индексы начали работать без велосипедов. поэтому перед созданием очередного шедевра необходимо сначала посмотреть что за шедевры уже создавали до тебя)
7 фев 17, 16:29    [20189778]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
ind_14
Guest
--Eugene--,
А зачем вам индекс из 2х колонок? Почему не подойдет из одной?
7 фев 17, 17:45    [20190176]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2042
ind_14,

ну допустим таблица партицирована двухуровнево (списками), а индекс нужен локальный по первичному ключу (который есть суть третья колонка)
7 фев 17, 18:17    [20190271]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2042
трехколоночный индекс нужен в идеале, не двух
7 фев 17, 18:19    [20190278]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
-2-
Member

Откуда:
Сообщений: 12968
ind_14
Почему не подойдет из одной?
Стоило бы начать с количества строк. Зачем нужно хранить более одной строки, достаточно хранить одну самую любимую. Тогда и индексов не понадобится вообще.
7 фев 17, 18:27    [20190298]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2042
-2-
достаточно хранить одну самую любимую. Тогда и индексов не понадобится вообще.
пошел выбирать самую любимую строку
7 фев 17, 18:31    [20190311]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
fortnet
Member

Откуда:
Сообщений: 522
--Eugene--
ind_14,

ну допустим таблица партицирована двухуровнево (списками), а индекс нужен локальный по первичному ключу (который есть суть третья колонка)


Какой смысл первичный ключ делать локальным?
9 фев 17, 11:34    [20196081]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2042
fortnet,

Я не собираюсь делать индекс первичного ключа локальным (хотя, может быть, имело бы смысл, не рассматривал идею). Индекс первичного ключа так и остается несекционированным.
Но рядом будет составной локальный индекс, включающий как ключи секционирования, так и первичного ключа.
9 фев 17, 12:19    [20196235]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
kaldorey
Member

Откуда:
Сообщений: 557
fortnet,

например, exchange partition including indexes
9 фев 17, 17:45    [20197861]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
pihel
Member

Откуда: СПБ
Сообщений: 137
kaldorey,

+ возможно отключения частями при вставке и частичного ребилда. И добавление колонки партиционирования может уменьшить высоту индекса.
10 фев 17, 09:55    [20199345]     Ответить | Цитировать Сообщить модератору
 Re: Порядок расположения колонок составного индекса  [new]
fortnet
Member

Откуда:
Сообщений: 522
kaldorey,

влияние на производительность этой редкой операции мизерно, а проблемы с ожиданиями во время вставки в таблицу из-за проверки ограничения по ключу будут вполне ощутимыми.

--Eugene--
Но рядом будет составной локальный индекс, включающий как ключи секционирования, так и первичного ключа.



Первичный ключ судя по предыдущему посту не составной. Можете привести пример,
где необходим такой составной локальный индекс.
10 фев 17, 10:41    [20199519]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить