Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Имеет ли смысл создавать композитные индексы по набору полей, если для каждого поля по отдельности уже есть индекс (например, это внешние ключи)? Если да, то в каких случаях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 09:14 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Interloper, есть если отбор часто идёт по сразу по всем полям входящих в композитный индекс. И естественно если селективность такого отбора высока. Существенный выигрыш можно получить на таблицах которые обеспечивают связь N:M, особенно если на оба поля наложено ограничение уникальности (при этом индекс естественно становится уникальным) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 09:22 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Hello, Interloper! You wrote on 17 марта 2015 г. 10:50:30: Interloper> Имеет ли смысл создавать композитные индексы по набору полей, если для > каждого поля по отдельности уже есть индекс (например, это внешние > ключи)? Если да, то в каких случаях? в общем случае смысла не имеет. в частных случаях, при ОСОЗНАННОМ применении имеет право жить. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 10:51 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Interloper, композитный индекс, в лучшем случае, может заменить только индекс по первому столбцу. Отдельные индексы по следующим столбцам все равно придется создавать. Так что избыточность индексов невелика получается)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 12:02 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Interloperв каких случаях? Если тщательно изучил http://ibase.ru/devinfo/dataaccesspaths.htm Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 12:14 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
fd00chInterloper, композитный индекс, в лучшем случае, может заменить только индекс по первому столбцу . Отдельные индексы по следующим столбцам все равно придется создавать. Так что избыточность индексов невелика получается)) И как получаются выводы такие??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 13:29 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
fd00chкомпозитный индекс, в лучшем случае, может заменить только индекс по первому столбцу.Земляк, ты бредишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 13:30 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 14:10 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Hello, Fd00ch! You wrote on 17 марта 2015 г. 14:18:53: Fd00chчто не так?всё не так. индекс по полям (f1, f2, f3, f4) условие отбора (f1, f2, f3) - индекс используется для всех трёх полей условие отбора (f1, f2, f4) - индекс используется только для f1 и f2. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 14:22 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, отбор по f2+f3+f4 или по f3+f4 или по f4- индекс идет лесом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 14:30 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Hello, Fd00ch! You wrote on 17 марта 2015 г. 14:35:03: Fd00chотбор по f2+f3+f4 или по f3+f4 или по f4- индекс идет лесоместессссно Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 14:34 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
fd00chотбор по f2+f3+f4 или по f3+f4 или по f4- индекс идет лесом Мимопроходящийпри ОСОЗНАННОМ применении имеет право жить. создание композита и не использование в отборе первого сегмента относится скорее к термину "ССЗБ", а не "ОСОЗНАННОМ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 14:35 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, для развития темы: а есть какие-то среднепотолочные данные, на сколько % композит по 2-3 полям может обгнать отдельные индексы? зы. я при осознанном осмыслении для себя решил, что бОльшая польза будет от частичных индексов и "партиционировании" таблиц. пичалька, что птичка такому не научится никогда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 15:03 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
fd00ch, с чего это ты взял? Firebird release strategy and roadmap for 2015/2016 Firebird 4.0 planning Feature list (cont'd) External database links, heterogenous queries Bi-directional index navigation Batch API operations Implicit transactions New data access paths, subquery transformations Query timeouts Partial indices Shared metadata cache планы конечно предварительные, но когда нибудь будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 15:09 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, "через 3 года" и "никогда" - для меня синонимы)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 15:13 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
fd00ch> есть какие-то среднепотолочные данные, на сколько fd00ch> % композит по 2-3 полям может обгнать отдельные индексы? Это даже не среднепотолочные, а насколько средняя температура в травматологии выше средней температуры в реанимации. В определенных случаях будет выше, в определенных - ниже, в третьих зависит от и т.д. Впрочем, щас Таблоид придёт, намеряет тебе по самые не балуй. P.S. Сегодня, возможно, не мой день, но лично я никакой связи между "частичными индексами" и "партиционированием таблиц" не вижу, совсем никакой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 15:21 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийиндекс по полям (f1, f2, f3, f4) условие отбора (f1, f2, f3) - индекс используется для всех трёх полей поскольку в композитном индексе ключи второго и далее столбцов сгруппированы относительно предыдущего, полноценно композитный индекс будет использоваться только в случае where f1 = x and f2 = y and f3 ... для f3 может быт >, <, =. Иначе, например, если where f1 > x and f2 = y and f3 ... то затраты на такой поиск будут эквивалентны поиску по одиночному индексу по f1. InterloperИмеет ли смысл создавать композитные индексы по набору полей, если для каждого поля по отдельности уже есть индекс не имеет. исключение - если ты для ORDER BY F1, F2, F3 хочешь получить в плане использование индекса, а не сортировку, то тогда придется создать индекс по F1+F2+F3. Но выгода выборки в порядке индекса есть только на малых объемах выборок. Большой объем выборки при таком плане приведет к адскому объему ввода-вывода (страниц с диска). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 15:30 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
kdvИначе, например, если where f1 > x and f2 = y and f3 ... то затраты на такой поиск будут эквивалентны поиску по одиночному индексу по f1. затраты для композита будут больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 15:45 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
kdv> то затраты на такой поиск будут эквивалентны поиску по одиночному индексу по f1. Нет, дороже выйдет, в зависимости от веса композита. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 15:55 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
dimitrзатраты для композита будут больше да, я не то написал. имел в виду, что "процедурно" сервер будет использовать только первый сегмент индекса. А затраты конечно будут выше, т.к. композитный индекс "жирнее". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 17:24 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Если есть выборки вида "where f1 = x and f2 = y", насколько создание композитного индекса по этим полям ускорит выполнение запросов в сравнении с двумя отдельными индексами по столбцам f1 и f2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2015, 07:52 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Interloperнасколько создание композитного индекса по этим полям ускорит выполнение запросов в сравнении с двумя отдельными индексами по столбцам f1 и f2?создать табличку на пару колонок и десяток миллионов записей дело нескольких минут, загнал запрос и проверил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2015, 08:05 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, Меня интересует мнение сообщества. Я предполагаю, что заметного выигрыша не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2015, 12:11 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
InterloperМеня интересует мнение сообщества. Мнение сообщества не имеет значения в свете информации, приведённой по данной мною выше ссылке. Движку на это мнение глубоко наплевать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2015, 12:15 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Interloper, Выигрыш будет только если будут задействованы все сегменты индекса, иначе индекс по отдельному полю выиграет. Какой будет выигрыш хз. Мерить надо, может быть 10-20%, а может и не быть. Мало это или много решать разработчику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2015, 12:36 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
InterloperМеня интересует мнение сообщества При чем тут мнение сообщества. Тут важно конкретно твоё понимание. Объясню на пальцах. При чем все это относится к любой базе, не только Firebird, включая допотопные и будущие. У тебя есть 3 варианта: 1. Таблица маленькая (какой нибудь короткий справочник в 5-10-20 записей). Тут индексы вообще не нужны никакие (ну кроме ПК для удобства использования уникальности записи). Быстрее записи перебрать чем подобрать индекс, поднять его в память и использовать. 2. Если в поле f1 одинаковые значения, то без индекса по двум полям (f1,f2) а только с индексом по f1 запрос с условием f1=:x and f2=:y будет равносилен (в лучшем случае) полному перебору всех записей без использования индекса. В этом случае индекс с двумя ключами (f1,f2) нужно делать обязательно (если, конечно, в f2 все значения не одинаковые, тогда просто условие делать не надо). То же самое касается случаев, когда в f1 "много" одинаковых значений. Например, в таблице 500млн записей, а значения f1 1..100. 3. Если в поле f1 уникальные значения, то что с индексом (f1,f2), что с индексом (f1) у тебя запрос с условием f1=:x выдаст одну (максимум) запись. Соответственно, и f1=:x and f2=:y - тоже максимум одна запись. Следовательно, ключ f2 индекса будет только занимать место на диске, приводить к лишним чтениям и занимать лишнюю память. В таком случае индекс с ключами (f1,f2) бесполезен и даже вреден , надо делать только индекс (f1). То же самое касается случаев, когда в f1 значения "почти" одинаковые. Например, дата/время, или еще что-то, что ты знаешь, в силу специфики твоей задачи. Т.е. если ты знаешь точно, что запрос с f1=:x будет выдавать единицы записей, то 2-й ключ делать не надо . Какой случай у тебя - я хз. У меня, например, много огромных таблиц, в которых есть индексы с ключем (TERMINAL_ID,SHIFT_ID). Терминалов больше ста, смен в каждом терминале несколько тысяч. И за каждую смену в зависимости от таблицы от одной записи до десятков тысяч записей. Иногда использую индексы даже с тремя ключами. Все запросы TERMINAL_ID= AND SHIFT_ID= работают мгновенно уже более 10 лет. К слову сказать, оптимизатор ФБ всегда для таких запросов верный план подбирает (конкретно для этого случая проблем не было ни разу). И еще, напоследок. Тебе тут советовали факи многие уважаемые люди. Прочти их. Хоть раз в жизни придется прочитать для понимания, как это работает. Как вообще индексы работают. Как используют битовую маску ключа, как сортируются и вообще, теорию почитай. Для общего понимания, зачем это надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 15:26 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
YuRockесть индексы с ключем (TERMINAL_ID,SHIFT_ID). Терминалов больше ста, смен в каждом терминале несколько тысячпочему порядок полей в индексе именно такой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 15:32 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
fd00ch, Как зачем. Чтобы по всему терминалу за всю историю суммы считать. Чтобы за период смен суммы считать... А что? Смены, кстати, с единицы в каждом терминале идут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 23:33 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
YuRock, Спасибо за объяснение. С методами доступа к данным в FB я знаком в целом. В твоем ответе не рассмотрен случай, когда индексы созданы отдельно для полей f1, f2. Разница между индексами f1 и (f1, f2) очевидна. Если у нас есть индексы отдельные на f1 и f2, для запроса f1=:x and f2=:y оптимизатор сначала будет использовать лучший индекс из этих двух, а после отбора по полю лучшего индекса применит оставшийся индекс, так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 10:54 |
|
||
|
Целесообразность создания композитных индексов
|
|||
|---|---|---|---|
|
#18+
Interloper, нет не так. Перечитай статью ещё раз. Можно ещё трёшку поставить и посмотреть что там explain план говорит. Очень полезно для понимания что и как работает. Вот маленький пример Код: sql 1. 2. 3. Код: plaintext 1. 2. 3. 4. 5. 6. 7. из плана видно, что по каждому из индексов создаются битовые маски, а потом они объединяются и лишь только потом идёт выборка из таблицы по внутреннему идентификатору RDB$DB_KEY Теперь посмотрим что будет когда индекс создан по двум полям Код: sql 1. Код: sql 1. 2. 3. Код: plaintext 1. 2. 3. 4. Из плана видно, что битовая маска строится один раз, а потом сразу идёт выборка из таблицы по внутреннему идентификатору RDB$DB_KEY Что немного дешевле. Скоко это будет в цифрах хз. Надо мерить в каждом конкретном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2015, 11:50 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1562958]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 279ms |
| total: | 537ms |

| 0 / 0 |
