|
|
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Задача: создать индекс из нескольких двух колонок таблицы. Вопрос: как неинтуитивным путем понять в каком порядке их расположить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:01 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--, Почитай Льюиса, прокачаешь свою интуицию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:02 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Для начала, придумай запросы, которые будут типичны для этой таблички и которым понадобится индекс Если всегда на равенство обоих колонок, то выбирай первую менее селективной и включи COMPRESS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:06 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровЕсли всегда на равенство обоих колонок, то выбирай первую менее селективной и включи COMPRESSА я бы в таком случае выбрал в качестве первой наиболее селективную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:09 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
А смысл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:21 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Вячеслав ЛюбомудровА смысл? Мало - ли, вдруг по высоко-селективному браться нет-нет, а таки придется. А низкоселективному индекс как мертвому припарка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:41 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
С первым малоселективным можно INDEX SKIP SCAN делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:51 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Товагищи, подскажите как вычислить селективность колонки для данного случая (с учетом перекоса данных, если таковой закономерен)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 13:58 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Ну дык по-этому и был вопрос по поводу запросов Также, понятно, что для уникального столбца второй нужен только для невляпывания в саму табличку -- тут естественно, первым уникальный, а лучше вообще IOT Но, вот скажем, табличка тех же платежей/звонков и т.п. где есть дата и контора За один день у определенной конторы в среднем было 10 платежей, но с другой стороны там 10000 контор (из которых как правило, большая часть мертвых), а в день совершается 10000 платежей/звонков (но даты с секундами) -- в одну секунду в среднем 8. Дата здесь селективней, вот только в здравом уме никто не сделает индекс (дата, контора) Наверное, таки, небольшая подмена понятий :-) Ну и естественно, тестирование -- лучший арбитр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 14:03 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Короче, я опять какую-то херню понес Надо интересоваться у ТС, что есть, как собирается обращаться и что, собственно говоря, хочет получить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 14:08 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Ёпт, я думал, есть какой-то общий подход.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 14:18 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--, Да, выглядит он так - почитай Льюиса, сначала поставь колонки по убыванию/возрастанию селективности, потом потестируй на реальных запросах по логике твоего бизнеса и выбери наиболее удобный лдя тебя вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 14:54 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Еще раз -- самое главное, какие запросы туда будут, с какими предикатами и что ты от этого индекса ждешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 14:57 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
IMHO если индексы построили правильно (реально по тем двум колонкам, которые нужны) и запросов, где поиск идет по одной из колонок нет - то IMHO в 90% случаев, в реальной системе, будет "фиолетово". Т.к. в большинстве случае, ошибаются уже на первом шаге, выбор индексов и колонок которые требуются, то система будет "стоять колом" в независимости от порядка полей ))) Лично я этим никогда не заморачивался, а порядок колонок указывал в "интиетивно понятном" виде ))) В тех 1-10% процентов случаев, где это важно - очень большая таблица или очень специфическое распределение данных или очень специфические запросы/план, такой выбор по "общим правилам" сформулированым на форуме все равно не сделать. Будет очень сильно зависит от конкретной проблемы с производительностью. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 15:30 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, +1 но еще хочется добавить, иногда индексы приходиться убивать чтобы другие индексы начали работать без велосипедов. поэтому перед созданием очередного шедевра необходимо сначала посмотреть что за шедевры уже создавали до тебя) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 16:29 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--, А зачем вам индекс из 2х колонок? Почему не подойдет из одной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 17:45 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
ind_14, ну допустим таблица партицирована двухуровнево (списками), а индекс нужен локальный по первичному ключу (который есть суть третья колонка) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 18:17 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
трехколоночный индекс нужен в идеале, не двух ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 18:19 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
ind_14Почему не подойдет из одной?Стоило бы начать с количества строк. Зачем нужно хранить более одной строки, достаточно хранить одну самую любимую. Тогда и индексов не понадобится вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 18:27 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
-2-достаточно хранить одну самую любимую. Тогда и индексов не понадобится вообще.пошел выбирать самую любимую строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2017, 18:31 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--ind_14, ну допустим таблица партицирована двухуровнево (списками), а индекс нужен локальный по первичному ключу (который есть суть третья колонка) Какой смысл первичный ключ делать локальным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 11:34 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
fortnet, Я не собираюсь делать индекс первичного ключа локальным (хотя, может быть, имело бы смысл, не рассматривал идею). Индекс первичного ключа так и остается несекционированным. Но рядом будет составной локальный индекс, включающий как ключи секционирования, так и первичного ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 12:19 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
fortnet, например, exchange partition including indexes ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2017, 17:45 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
kaldorey, + возможно отключения частями при вставке и частичного ребилда. И добавление колонки партиционирования может уменьшить высоту индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 09:55 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
kaldorey, влияние на производительность этой редкой операции мизерно, а проблемы с ожиданиями во время вставки в таблицу из-за проверки ограничения по ключу будут вполне ощутимыми. --Eugene-- Но рядом будет составной локальный индекс, включающий как ключи секционирования, так и первичного ключа. Первичный ключ судя по предыдущему посту не составной. Можете привести пример, где необходим такой составной локальный индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 10:41 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
fortnet, Имеет ли смысл секционирование уникального индекса? (в том ответе подспудно имеется в виду и корректировка самих запросов - добавление предикатов с ключами секционирования) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 12:52 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--, ясно - у вас идея фикс о локальном уникальном индексе, об уникальности которого знаете только вы. Иначе говоря, вы путаете высокоселективный индекс с уникальным. Уникальный индекс для партицированных таблиц всегда должен быть глобальным . Если это не так - см. пост выше о проблемах вставки. Поэтому использовать столбец , на котором он построен в связке с другими столбцами для построения локального индекса бессмысленно. Собственно поэтому и был задан вопрос о примере . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 14:53 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Ну, если только уникальный ключ не является ключем секционирования И еще раз аффтару: озвучь запросы, для которых ты хочешь создать новый индекс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 15:02 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Да, соглашусь, с этими ограничениями можно построить уникальный индекс партицированный. И да, собственно, зачем эта уникальность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 15:14 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Не понял Вот есть у меня куча табличек, которые разбиты по ID (ID в формате дата+sequence -- фиксированной длины) -- я легко делю исторические секции по году/полугоду И PK работает и архивные секции легко нарезаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 15:26 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, именно. А, уважаемый fortnet, запросы простые. Например: Код: plsql 1. - оно с локальным индексом, включающим все три колонки (а первые две - ключи секционирования) будет работать на порядки быстрее в данном случае, поскольку используются "горячие данные", коих 5% от всего объема. И таких запросов (использующих is_hot = 'Y' - более 90% от всей массы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 16:32 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Я вообще-то против, что в первичный ключ добавлять еще и ключ секционирования, чтоб сделать его индекс локальным На мой взгляд -- в этом случае лучше глобальный индекс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 16:36 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Вот если бы можно было партицировать индекс по колонкам, не перечисленным в нем - это был бы идеальный вариант. А так я вынужден создавать локальные индексы, поскольку необходимо партицировать их списками.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2017, 16:54 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--Вячеслав Любомудров, именно. А, уважаемый fortnet, запросы простые. Например: Код: plsql 1. - оно с локальным индексом, включающим все три колонки (а первые две - ключи секционирования) будет работать на порядки быстрее в данном случае, поскольку используются "горячие данные", коих 5% от всего объема. И таких запросов (использующих is_hot = 'Y' - более 90% от всей массы). А oracle , конечно, без индекса по is_hot будет по всем партициям лазить, даже прочитав условие в предикате is_hot = 'Y' и только с индексом сообразит куда смотреть? Ключ секционирования - это что по вашему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2017, 16:58 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
fortnet, прошу прощения, запросы не такие уж и простые, как теперь смотрю.. Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2017, 18:45 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--, Нет разницы. Этот запрос не сильно отличается от предыдущего. Создайте простой локальный (или глобальный партицированный - хотя по запросу не видно, что он нужен) индекс и смотрите планы. И зачем хинтовать такие простые запросы. Для данного запроса нужно только, что бы он выбрал требуемую партицию на основе предиката по is_hot in ('Y', :is_hot) ( и возможно подпартицию по bank_id ) и применил к ней локальный индекс для поиска по trade_id . Всё. Незачем городить огород с уникальностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 10:09 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
fortnetИ зачем хинтовать такие простые запросыЗатем что если не хинтовать, оракл сваливается на уникальный (нелокальный) индекс: С хинтом Код: plaintext 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. Без хинта Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 12:17 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--Может показаться, что попугаи те же, только вот на практике с локальным в разы быстрее. Ты бы хоть пример придумал, который покажет твое быстрее ) Какой толк от примера на разных наборах данных, да еще с одинаковыми оценками? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 13:01 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
AlexFF__|, Счего наборы данных разные? таблица та же запрос тот же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 13:23 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--, DDL по таблице приложите. Запутали совсем индексами. Какие , что ... Непонятно ничего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 13:50 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
fortnet, DDL Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 14:23 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 14:52 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--Прошу прощения, Код: plsql 1. при вашем способе разбиения таблицы, чепуха какая-то, имхо. (никогда не имев дела с партиционированием, планируя локальный индекс, я скромно делил бы) условия в запросе сорта Код: plsql 1. 2. 3. 4. 5. 6. на такие, с которыми работаем механизм выбора партиции и такие, с которыми работает локальный индекс у вас в одно ведущей партиции не более одного значения be_id - значит это условие для механизма выбора раздела: [quot --Eugene--]Прошу прощения, Код: plsql 1. 2. 3. 4. итог: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 15:56 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
booby, знаток.. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 16:15 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--, если все запросы идут по одной из партиций, то локальный индекс лучше, т.к. локальные индексы будут совсем крошечные и у них будет маленькая высота (blevel) Код: 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. локальные индексы по горячим данным имеют высоту = 0, глобальный же высоту = 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 16:24 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
pihelлокальные индексы по горячим данным имеют высоту = 0, глобальный же высоту = 1.чево? где тут глобальный индекс вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2017, 01:54 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
--Eugene--pihelлокальные индексы по горячим данным имеют высоту = 0, глобальный же высоту = 1.чево? где тут глобальный индекс вообще? SYS_C00425187 глобальный индекс от TRADE_ID NUMBER PRIMARY KEY, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2017, 12:20 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2017, 11:58 |
|
||
|
Порядок расположения колонок составного индекса
|
|||
|---|---|---|---|
|
#18+
pihel, ппц. до последнего времени считал, что Глобальными могут быть только Партицированные индексы. ан нет зачем их называть Глобальными, если они Непартицированные и - соответственно - не могут быть локальными?? от ихней номенклатуры голова пухнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2017, 12:06 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1886399]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
198ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 540ms |

| 0 / 0 |
