PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

chỉ mục postgresql trên cột chuỗi

Để kiểm tra bình đẳng đơn giản (= ), chỉ mục B-Tree trên varchar hoặc text cột là đơn giản và là sự lựa chọn tốt nhất. Nó chắc chắn giúp hiệu suất rất nhiều .

Tất nhiên, chỉ mục B-Tree trên một số nguyên integer đơn giản hoạt động tốt hơn. Đối với người mới bắt đầu, so sánh integer đơn giản giá trị nhanh hơn một chút. Nhưng quan trọng hơn, hiệu suất cũng là một chức năng của kích thước của chỉ số. Một cột lớn hơn có nghĩa là ít hàng hơn trên mỗi trang dữ liệu, có nghĩa là phải đọc nhiều trang hơn ...

Kể từ HomeAddress dù sao thì hầu như không phải là duy nhất, nó không phải là một khóa chính tự nhiên tốt. Tôi thực sự khuyên bạn nên sử dụng khóa chính thay thế thay vì. Một serial cột là sự lựa chọn hiển nhiên cho điều đó. Mục đích duy nhất của nó là có một khóa chính đơn giản, nhanh chóng để làm việc.

Nếu bạn có các bảng khác tham chiếu đến bảng đã nói, điều này thậm chí còn trở nên hiệu quả hơn. Thay vì sao chép một chuỗi dài cho cột khóa ngoại, bạn chỉ cần 4 byte cho cột số nguyên. Và bạn không cần cập nhật liên tục quá nhiều, vì địa chỉ nhất định phải thay đổi, trong khi pk đại diện có thể giữ nguyên (nhưng tất nhiên không phải vậy).

Bảng của bạn có thể trông như thế này:

CREATE TABLE resident (
   resident_id serial PRIMARY KEY
  ,address text NOT NULL
   -- more columns
);

CREATE INDEX resident_adr_idx ON resident(address);

Điều này dẫn đến hai chỉ mục B-Tree. Chỉ mục duy nhất trên resident_id và một chỉ mục thuần túy trên address .

Tìm hiểu thêm về chỉ mục trong sách hướng dẫn .
Postgres cung cấp rất nhiều tùy chọn - nhưng bạn không cần thêm tùy chọn nào cho trường hợp đơn giản này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm nhận xét vào cột khi tôi tạo bảng trong PostgreSQL?

  2. Chương trình phụ trợ lưu trữ ảnh hưởng đến Datomic như thế nào?

  3. Knex kết nối với Heroku Postgres bị lỗi?

  4. Làm cách nào để trả về các hàng kết quả truy vấn trong hàm PostgreSQL?

  5. Có gì mới trong PostgreSQL 13?