2012-01-19 46 views
7

Tôi là một newbie ở postgres. Tôi có một cột có tên là host (chuỗi varchar2) trong một bảng có khoảng 20 triệu hàng. Làm cách nào để sử dụng lập chỉ mục để tối ưu hóa tìm kiếm của tôi để tìm máy chủ cụ thể. Ngoài ra, cột này sẽ được cập nhật hàng ngày tôi có cần viết chỉ mục kích hoạt tại khoảng thời gian cụ thể không? Nếu có, làm thế nào để tôi làm điều đó? (Đối với hồ sơ Tôi đang sử dụng Ruby và Rails 3)Lập chỉ mục Postgres?

Trả lời

7

Giả sử bạn đang làm kết hợp chính xác, bạn chỉ có thể tạo ra các chỉ số và để lại nó:

CREATE INDEX host_index ON table_name (host) 

Các truy vấn tối ưu chỉ nên sử dụng tự động.

Bạn có thể muốn chỉ định các tùy chọn khác như đối chiếu để sử dụng.

Xem PostgreSQL docs for CREATE INDEX để biết thêm thông tin.

+0

vì vậy tôi không cần phải viết trình kích hoạt? Việc lập chỉ mục sẽ được cập nhật khi các bản ghi của tôi được cập nhật? –

+2

Lập chỉ mục được cập nhật trong khi các bản ghi của bạn được cập nhật. Quy tắc chung là bất kỳ chỉ mục nào tăng tốc độ truy xuất, nhưng làm chậm cập nhật thông tin. Vì vậy, hãy cẩn thận với việc chọn cấu trúc chỉ mục, nó có thể ảnh hưởng đáng kể đến hiệu suất của các bản cập nhật. – J0HN

0

Tôi khuyên bạn nên sử dụng BRIN Index kể từ khi được giới thiệu từ PostgreSQL 9.5 thay vì chỉ số btree thông thường.

0

Để tìm kiếm văn bản, bạn nên sử dụng các loại chỉ mục GIN hoặc GiST.

https://www.postgresql.org/docs/9.5/static/textsearch-indexes.html

Một khả năng khác là nếu bạn chỉ thực hiện chính xác phù hợp trong cột host, tức là không có sự so sánh bất bình đẳng (>, <) và phù hợp với từng phần (like, ký tự đại diện) tham gia, bạn có thể xem xét chuyển đổi host đến một số nguyên băm để tăng tốc độ tìm kiếm một cách đáng kể.

Các vấn đề liên quan