Индекс (age, balance): равенство и диапазон

SQLMiddle10 минпроверка — Спринтиндекс · PostgreSQL14-t007
SELECT id FROM accounts WHERE balance > 100000 AND age = 23;

Условия по balance и age одинаково селективны. Построй оптимальный составной индекс. Подойдёт ли он для SELECT id FROM accounts WHERE balance > 100000?

Дополнительно: насколько эффективен индекс (age) для WHERE age = 23 AND gender = 'm'? Является ли индекс (age, gender) покрывающим для SELECT id, gender FROM accounts WHERE age = 23?

schema.sqlsql
1CREATE TABLE accounts (2    id      bigint  PRIMARY KEY,3    age     int     NOT NULL,4    gender  text    NOT NULL,5    balance numeric NOT NULL6);7INSERT INTO accounts8SELECT i, 18 + (i * 13) % 63, CASE WHEN i % 2 = 0 THEN 'm' ELSE 'f' END, (i * 7919) % 5000009FROM generate_series(1, 100000) AS i;
query.sqlsql
1SELECT id FROM accounts WHERE balance > 100000 AND age = 23
⌘ Enter — проверить