Поиск по дате рождения и полу

SQLMiddle7 минпроверка — Спринтиндекс · PostgreSQL14-t010
CREATE TYPE gender_enum AS ENUM ('male', 'female');
CREATE TABLE person (
    id        SERIAL,
    name      TEXT,
    birthdate DATE,
    gender    gender_enum DEFAULT 'male'
);

Нужно искать по birthdate и gender одновременно, например:

SELECT * FROM person
WHERE gender = 'female' AND birthdate BETWEEN '1990-01-01' AND '1990-01-31';

Какой индекс сделать? Можно ли обойтись отдельными индексами на birthdate и gender?

schema.sqlsql
1CREATE TYPE gender_enum AS ENUM ('male', 'female');2CREATE TABLE person (3    id        serial,4    name      text,5    birthdate date,6    gender    gender_enum DEFAULT 'male'::gender_enum7);8INSERT INTO person (name, birthdate, gender)9SELECT 'name' || i,10       date '1960-01-01' + (i * 7919) % 18000,11       CASE WHEN i % 2 = 0 THEN 'male' ELSE 'female' END::gender_enum12FROM generate_series(1, 100000) AS i;
query.sqlsql
1SELECT * FROM person WHERE gender = 'female' AND birthdate BETWEEN '1990-01-01' AND '1990-01-31'
⌘ Enter — проверить