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

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

и timestamp

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

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

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

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

11 ответов

10 просмотров

Если таблица будет партиционирована то 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 :))

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
32
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
1
Hey there Which is the best Linux destro for developers (coding)? To my research on reddit, they said Linux mint is good for mid level spec and Ubuntu for high Lev hardwar...
Wiz 🪄
11
Подскажите пожалуйста, а я могу вот такую штуку использовать? rpc, только реализованное в реббите https://www.rabbitmq.com/tutorials/tutorial-six-php ( или https://habr.com/ru...
Artyom
11
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
а мы ещё не созрели до того, чтобы создать отдельный чатик про настройку редакторов?
Cheese Syrowiecki
16
Всем привет! У меня почему-то по-разному отображается TListView в Debug и Release режимах (FireMonkey)! При запуске под Win приложения TListView заливается программо. в Debug ...
Александр COM
8
Карта сайта