Да, но в данном случае всё равно везде используется только первая часть индекса, выходит что вторая ненужна. Мысль про достаточно малое кол-во возвращаемых строк интересна, я пробовал только для 250к и 25к, попробую уменьшить кол-во строк.
ANALYZE всегда выполняю, чтобы он понимал какие данные.
Кирилл: Да, я так и понял, поэтому и указал в ответе что можно не сортировать при неизменности таблицы, либо сортировать но "стоиомсть" сортировки будет меньше (и будет зависеть от кол-ва измененных/новых данных)
Интересная мысль, верно ли я понял, что фактически это будет выглядеть как физическая сортировка строк таблицы в указанном порядке.
При запросах фактически будет происходить тоже, что и сейчас, только вот сортировать либо:
а) не надо совсем, если строки не менялись
б) надо сортировать, но количество перестановок в сортировке все равно гораздо меньше (множество то было упорядочено)
Swartalf: Не хотел вдаваться в палемику, но, например, на другой субд, помогает мультиколоночный индекс, первая часть которого используется вначале для фильтра а вторая - для сортировки. Я искал похожего решения в посгресе, но не нашел. Перечитал оф. документацию, стек, и ничего путного не нашел, хотя запрос крайне простой.
Видимо пострес просто так не умеет. Будем привыкать ;)
Опять же повторюсь, хочется именно использовать индекс для сортировки в представленном выше запросе. С настройками все понятно, просто "теоритически" я мог не соблюсти некоторые условия, при которых планировщик был бы готов использовать двойной индекс. Думал может быть кто-то сталкивался и знает. Т.к. заставить то его(планировщик) использовать определенный индекс нельзя.
Swartalf: т.е. по аналогии с другими СУБД postgresql не имеет использовать первую часть ключа для фильтра, а вторую для сортировки?
И все варианты оптимизации больше "физические": по-другому хранить, хранить на более быстром винте, тем не менее, насколько я понимаю, это отразится на ускорении выборки но не сортировки.
Партиционирование хорошо, а что если записей будет всего миллион?
т.е. это на данный момент эта задача - чисто теоретические изыскания, но хочется понять как её можно решить с минимальными усилиями в виде индексов.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
ANALYZE всегда выполняю, чтобы он понимал какие данные.