Всем привет, разбираюсь с индексами. Подскажите, пожалуйста ( вопрос чисто теоретический, возможно, какие - то ссылки если дадите, буду благодарен ).
Есть табличка с двумя полями — user_id, status. В status — могут лежать строки 5 типов ( ACCEPT / NOT ACCEPT / YES / NO / OK ).
Меня интересует, как правильно наложить составной индекс, и написать запрос для того, чтобы выборка через равенство ( на вход в запрос подавать user_id, status ), работала оптимально.
Вот, разбираясь — нашёл такую штуку, как селективность индексов, и она тем лучше, чем больше вариантов значений в столбце есть, и как понял в составных индексах нужно указывать сначала те столбцы, для которых селективность выше ( оптимизатор такое любит ).
Вот. Тут я и запутался — если я буду создавать btree индекс по этим двум полям(а после писать запрос ), то индекс будет такой ( user_id, status).
Что меня смутило — в моём представлении ( до того, как я узнал про селективность ), было такое, что составные индексы нужно накладывать так, чтобы отрезать части выборок. Я имею ввиду, что если наложить индекс как ( status, user_id ), то постгрес пойдет в индекс, найдет те записи, у которых нужный мне статус, и среди них найдёт нужный user_id. Но узнав о селективности, я что то совсем запутался