Các chỉ mục PostgreSQL tăng tốc các truy vấn SQL bằng cách tăng tốc độ tra cứu, bộ lọc và kết nối. Dưới đây là cách tạo chỉ mục trong PostgreSQL để tăng tốc truy vấn cơ sở dữ liệu, sử dụng câu lệnh PostgreSQL CREATE INDEX.
Cách tạo chỉ mục trong PostgreSQL
Dưới đây là các bước để tạo chỉ mục trong PostgreSQL bằng cách sử dụng câu lệnh PostgreSQL CREATE INDEX. Giả sử bạn có bảng sau
CREATE TABLE orders(
order_id INT PRIMARY KEY,
product_id INT NOT NULL,
sale INT NOT NULL,
product_name VARCHAR(10)
);
Cách thêm chỉ mục vào cột trong bảng
Giả sử bạn muốn thêm chỉ mục cho cột hoặc tập hợp các cột, sau đó sử dụng câu lệnh CREATE INDEX. Đây là cú pháp của câu lệnh CREATE INDEX
CREATE [UNIQUE] INDEX [CONCURRENTLY] index_name ON table_name
[USING METHOD](column_list)
Trong truy vấn trên, chúng tôi chỉ định tên chỉ mục sau CREATE INDEX, bảng mà bạn cần tạo chỉ mục và danh sách các cột được đưa vào lập chỉ mục.
Bạn có thể tùy chọn chỉ định từ khóa DUY NHẤT để đảm bảo rằng chỉ mục của bạn chỉ chứa các giá trị duy nhất
PostgreSQL hỗ trợ các phương pháp lập chỉ mục khác nhau như btree
, hash
, gist
, spgist
, gin
và brin
mà bạn có thể chỉ định trong quá trình tạo chỉ mục.
Theo mặc định, PostgreSQL sử dụng chỉ mục btree.
Dưới đây là một ví dụ để thêm chỉ mục mới cho cột product_name trong các đơn đặt hàng ở trên bảng
CREATE INDEX prod_id_index ON orders (product_id);
Đây là cách tạo chỉ mục bằng cách sử dụng nhiều cột
CREATE INDEX prod_id_index ON orders (product_id, order_id);
Đây là cách tạo chỉ mục bằng phương pháp băm
CREATE INDEX prod_id_index ON orders using hash(product_id, order_id);
Dưới đây là cách tạo chỉ mục duy nhất để tránh các giá trị trùng lặp
CREATE UNIQUE INDEX prod_id_index ON orders (product_id);
PostgreSQL cũng cho phép bạn tạo chỉ mục từng phần bằng mệnh đề WHERE, trong đó chỉ các giá trị phù hợp mới được lập chỉ mục
CREATE INDEX prod_id_index ON orders (product_id) where status=1;
Trong truy vấn trên, chỉ những prod_id được lập chỉ mục khi trạng thái =1
Hi vọng bài viết trên sẽ giúp bạn tạo index trong PostgreSQL
Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!