|
|
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
Есть такая таблица: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Из неё выборка поля value с group by по полям f1 -f5, date. + может быть условие в where для фильтрации данных. Набор полей в group by и where может быть произвольным. Как лучше создать индексы к такой таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 19:12 |
|
||
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
xPro, индекс полезен, если по условию на его поля отбирается малое количество страниц таблицы. чтобы выбрать индексы нужно анализировать распределение данных и характер запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2015, 19:24 |
|
||
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
xProЕсть такая таблица: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Из неё выборка поля value с group by по полям f1 -f5, date. + может быть условие в where для фильтрации данных. Набор полей в group by и where может быть произвольным. Как лучше создать индексы к такой таблице? Никакие в общем случае. Для запросов без where индексы скорее всего использованы не будут так как всеравно таблицу всю перебирать. Индексы для ускорения поиска каких то данных а не для ускорения запросов перебирающих всю таблицу. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2015, 02:45 |
|
||
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Так where как раз и будет в большинстве сценариев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 06:30 |
|
||
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
xProMaxim Boguk, Так where как раз и будет в большинстве сценариев. тогда от where условий и надо строить индексы а не от group by. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 07:22 |
|
||
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Я не говорю, что от group их хочу создать. Просто описал возможные сценарии. В where может быть любой набор полей, поэтому и вопрос, как индексы создать для такого случая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 08:07 |
|
||
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
xProMaxim Boguk, Я не говорю, что от group их хочу создать. Просто описал возможные сценарии. В where может быть любой набор полей, поэтому и вопрос, как индексы создать для такого случая? Невозможно создать индексы которые бы работали для произвольного набора условий. Или 1)жестко задаются возможные наборы условий и под них создаются индексы или 2)набирается статистика наиболее популярных запросов и под них создаются индексы (смиряясь с тем что редкие запросы будут тормозить) Я бы для начала сделал бы индексы по f1-f5 и date а дальше по фактической нагрузке и использованию решал. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 08:15 |
|
||
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
Maxim BogukЯ бы для начала сделал бы индексы по f1-f5 и date а дальше зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 10:04 |
|
||
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
Ivan DurakMaxim BogukЯ бы для начала сделал бы индексы по f1-f5 и date а дальше зачем? Код: sql 1. 2. 3. 4. 5. 6. для условий вида Код: sql 1. обычно таки именно такого плана запросы предполагаются. для остальных выборок по началу -- bitmap index scan-ы [т.н. фоксовский rushmore] если же популярен набор вида Код: sql 1. с фиксированным набором то можно подшаманить более сложносоставными индексами. главное знать -- насколько всё плохо. собрать статистику, всё лишнее снести есть идиотская идея -- сделать btree_gist на ((ARRAY[f1..f5]), date) или даже на( hstore(f1..fn),date) -- в некоторых случаях может проканать модифицировать условия фильтра так, чтобы предвыборка шла по этому хитровыстроенному индексу, а точный фильр -- по изначальному, не модифицированному условию. (смотреть надо на условия, в их многообразии) для группбая же по всей массе -- ничего не годно. только материализация. (там какие-то словеса можно гребсти про грануляцию, и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 11:36 |
|
||
|
Как лучше создать индексы в таблице?
|
|||
|---|---|---|---|
|
#18+
Ivan DurakMaxim BogukЯ бы для начала сделал бы индексы по f1-f5 и date а дальше зачем? минимальный набор более менее покрывающий наиболее вероятные на мой взгляд из всех возможных where когда неизвестно какие именно условия будут самые популярные в начале лучше не пытаться составные индексы придумывать --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2015, 12:58 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38909287&tid=1998110]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 531ms |

| 0 / 0 |
