복합 인덱스에서 인덱스에서 지정된 첫 번째 컬럼의 검색 조건이 범위 조건이여도 인덱스가 실행된다.
즉, between, >=, <= 여도 인덱스가 실행된다.
첫 번째 컬럼이 조회 조건에 없으면 인덱스는 실행되지 않는다.
```sql
create table books
(
"bookId" serial primary key,
"title" varchar(100) not null,
"author" varchar(50) null,
"publishYear" varchar(4) not null,
"groupNo" varchar(100) default null
)
INSERT INTO books
("title", "author", "publishYear", "groupNo")
VALUES
('title', 'author', floor(random() * (EXTRACT(YEAR FROM CURRENT_DATE) - 1900 + 1) + 1900)::varchar, floor(random() * (99-10+1) + 10)::varchar);
DO $$
BEGIN
FOR i IN 1..1000000 LOOP
INSERT INTO books
("title", "author", "publishYear", "groupNo")
VALUES
('title' || i, 'author' || i, floor(random() * (EXTRACT(YEAR FROM CURRENT_DATE) - 1900 + 1) + 1900)::varchar, floor(random() * (99-10+1) + 10)::varchar);
END LOOP;
END $$;
drop index books_book_id_publish_year_group_no_idx;
create index books_publish_year_group_no_idx on books ("publishYear", "groupNo")
select * from books
where "publishYear" > '2020'
and "groupNo" = '10';
select * from books
where "groupNo" = '10'
and "publishYear" > '2020';
```
'개발 > Postgresql' 카테고리의 다른 글
postgreSql explain option (0) | 2023.06.29 |
---|---|
postgresql 에서 DROP TABLE 시 해당 테이블에 종속된 모든 인덱스, 룰, 트리거, 제약조건도 함께 삭제 (0) | 2023.05.03 |
[PostgreSQL] collate (0) | 2023.03.27 |