|
Составной индекс
|
|||
---|---|---|---|
#18+
Добрый день! Есть таблица на 15 млн записей с полями 1. Field1 - number 2. Field2 - number 3. Field3 - number 4. ... Если условия на выборку используются только по полям Field1 ANS Field2 или Field1 AND Field3, то, вроде, логично делать два составных индекса Field1, Field2 и Field1, Field3. Или лучше делать три отдельных индекса по всем трем полям? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 08:54 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
Скорее всего достаточно одного только по Filed1 Ну или если он недостаточно селективный, то два (с Field1 в первой позиции) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 12:21 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
SergiiW Если условия на выборку используются только по полям Field1 ANS Field2 или Field1 AND Field3 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 13:28 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
miksoft А сами условия какие? Всегда строго на равенство, или по диапазону тоже? Всегда строго на равенство. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 17:06 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Скорее всего достаточно одного только по Filed1 Filed1 это, примерно, 1 млн. Если используются условия Filed1 AND Filed2 в результате только 1 запись. Если Filed1 AND Filed3 - от тысяч до сотен тысяч. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 17:12 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
SergiiW Filed1 это, примерно, 1 млн. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 18:58 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
miksoft SergiiW Filed1 это, примерно, 1 млн. Миллион строк на одно значение в Filed1. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 20:07 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
SergiiW Миллион строк на одно значение в Filed1. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 21:36 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
Ну или с Field1 первым и COMPRESS ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 13:29 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
miksoft SergiiW Миллион строк на одно значение в Filed1. Неожиданно. Если использовать только Filed2, то может быть выбрано несколько записей (1-4), потом нужно будет эти запаси обычным перебором отобрать по полю Field1. Если ключ по Field1 и Filed2 то всегда будет одна запись. Если отобрать записи по ключу Filed3, то можем получить несколько тысяч, десятков тысяч лишних записей. Потом нужно будет эти записи обычным перебором отобрать по полю Field1. Неужели это быстрее чем по ключу? Я думал, что составной ключ лучше. Можете пояснить почему только индексы по полям Filed2 и Filed3? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 21:58 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
miksoft, Уточняю. Если использовать только Filed2, то может быть выбрано одна запись в 96% случаев, 2 - 2% и 3 - 2%, потом нужно будет эти запаси обычным перебором отобрать по полю Field1. Ок, может и получим выигрыш. Если отобрать записи по ключу Filed3, то можем получить от тысяч до сотен тысяч записей. Потом нужно будет эти записи обычным перебором отобрать по полю Field1. То есть, всегда проверить поле Field1 без индекса для 1 000-1 000 000 записей. Неужели это быстрее чем по ключу? Я думал, что составной ключ лучше. Можете пояснить почему только индексы по полям Filed2 и Filed3? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 22:25 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
SergiiW Если Filed1 AND Filed3 - от тысяч до сотен тысяч. SergiiW Если отобрать записи по ключу Filed3, то можем получить несколько тысяч, десятков тысяч лишних записей. Потом нужно будет эти записи обычным перебором отобрать по полю Field1. Неужели это быстрее чем по ключу? И еще от массы факторов. Например, если кэша гарантированно хватает для размещения всех индексов и если таблица только читается, но не пишется, то (Filed1, Filed3) скорее всего будет быстрее. Пробуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 22:39 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
Спасибо за ответы всем. Буду пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 22:48 |
|
Составной индекс
|
|||
---|---|---|---|
#18+
SergiiW miksoft, Уточняю. Если использовать только Filed2, то может быть выбрано одна запись в 96% случаев, 2 - 2% и 3 - 2%, потом нужно будет эти запаси обычным перебором отобрать по полю Field1. ... Я думал, что составной ключ лучше. Если надо оптимизировать только один конкретный запрос типа такого Код: plsql 1. 2.
тогда да, можно составной индекс. Если же возможны запросы Код: plsql 1.
тогда индекс только по полю Field2 ну или Field2, Field1 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2021, 19:11 |
|
|
start [/forum/topic.php?fid=52&msg=40101943&tid=1879828]: |
0ms |
get settings: |
18ms |
get forum list: |
8ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
37ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
280ms |
get tp. blocked users: |
1ms |
others: | 2737ms |
total: | 3090ms |
0 / 0 |