172 похожих чатов

Привет, есть такой сложный ключик: (s_id, p_id, ts) 2 инта

и timestamp

- s_id около 20к сейчас (может быть 100к в будушем)
- p_id считанный десяток
- ts на каждую минуту

как всегда хочется, чтобы индекс был минимальный и максимально быстрый, и я вот не могу вспомнить, какой там правильный порядок для колонок поставить

вроде сперва с самой маленькайо cardinality, потом больше? напомните пожалуйста

(таблица еще будет по ts партицированна. но это другой вопрос)

11 ответов

18 просмотров

Если таблица будет партиционирована то ts у вас первое поле индекса в любом случае т.к. постгрес не умеет в глобальные индексы. Далее обычно по убыванию селективности - s_id, p_id

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

Denis
Если таблица будет партиционирована то ts у вас пе...

>т.к. постгрес не умеет в глобальные индексы. Что, однако, совершэнно не требует ставить ts первым. Более того, учитывая особенности ts (чаще всего ищут по диапазону, чаще всего значения плюс-минус уникальны) -- как раз после ts что-то ставить ужэ не очень полезно.

Ilya Anfimov
>т.к. постгрес не умеет в глобальные индексы. Что...

его не придется ставить, у вас партиция индекса уже будет базироваться на диапазоне ts

Denis
его не придется ставить, у вас партиция индекса уж...

Как будто от того, что у нас есть диапазон ts -- индэкс автоматически перестаёт быть нужэн!

Ilya Anfimov
При чём тут вообще это?

при том что если вы не укажете в запросе ts то будут просмотрены ВСЕ партиции индекса, что по сути похоже на скипскан составного индекса (ts,s_id,p_id)

Ilya Anfimov
При чём тут вообще это?

И кстати еще проблема уникальности. Можно притворяться что в постгресе "не обязательно ставить ts первым", но когда встает вопрос глобальной уникальности то выясняется что ts там уже давно стоит не смотря на то что его там вроде бы "нет".

Denis
при том что если вы не укажете в запросе ts то буд...

>то будут просмотрены ВСЕ партиции индекса, Конечно. Или если указать неправильно. >то по сути похоже на скипскан составного индекса Ну и? Тем более, что партицый обычно не так много -- и это скипскан с небольшой кардинальностью. Впрочем, это отход от темы всё. Ещё раз -- если ts указан точно -- то порядок вообще не будет важэн. Если диапазоном -- то ужэ появляются вопросы к кардинальности всех остальных условий. И если она строго равна один (указаны точно) -- то ts как раз нужно будет ставить последним. И это совершэнно независимо от области значений ts -- поделены они на партицыи или нет.

Oleg-Kovalov Автор вопроса
Denis
при том что если вы не укажете в запросе ts то буд...

в запросах там всегда участвует ts, то есть партиции 100% отсекаются и чаще всего 1 будет интересна

Oleg Kovalov
в запросах там всегда участвует ts, то есть партиц...

ну и посудите сами - 1 у вас всегда указывается ts, 2 это самое селективное поле в данном случае смысл городить партиционированный по ts индекс в котором "отсутствует" поле ts :))

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Карта сайта