Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng tỷ lệ kèo bóng đá trang chohiện tạiPhiên bản hoặc tỷ lệ kèo bóng đá trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

11.7. Chỉ mục tỷ lệ kèo bóng đá

AChỉ mục tỷ lệ kèo bóng đá10650_10763vị ngữcủa Chỉ số tỷ lệ kèo bóng đá). Chỉ mục chỉ chứa các mục cho bảng đó hàng thỏa mãn vị ngữ.

10914_11408Ví dụ 11-1Hiển thị tỷ lệ kèo bóng đá ứng dụng có thể của ý tưởng này.

Ví dụ 11-1. Thiết lập một chỉ mục tỷ lệ kèo bóng đá để Loại trừ các giá trị chung

Giả sử bạn đang lưu trữ nhật ký truy cập máy chủ web trong a cơ sở dữ liệu. Hầu hết các quyền truy cập đều bắt nguồn từ phạm vi địa chỉ IP của Tổ chức của bạn nhưng tỷ lệ kèo bóng đá số đến từ nơi khác (giả sử, nhân viên trên các kết nối quay số). Nếu tìm kiếm của bạn theo IP chủ yếu Đối với các truy cập bên ngoài, có lẽ bạn không cần lập chỉ mục IP phạm vi tương ứng với mạng con của tổ chức của bạn.

Giả sử tỷ lệ kèo bóng đá bảng như thế này:

12166_12243

Để tạo một chỉ mục tỷ lệ kèo bóng đá phù hợp với ví dụ của chúng tôi, hãy sử dụng một lệnh như thế này:

12374_12535

tỷ lệ kèo bóng đá truy vấn điển hình có thể sử dụng chỉ mục này sẽ là:

Chọn * từ access_log trong đó url = '/index.html' và client_ip = inet '212.78.10.32';

tỷ lệ kèo bóng đá truy vấn không thể sử dụng chỉ mục này là:

12813_12882

Quan sát rằng loại chỉ số tỷ lệ kèo bóng đá này yêu cầu Các giá trị phổ biến được xác định trước. Nếu phân phối các giá trị là vốn có (do bản chất của ứng dụng) và tĩnh (không thay đổi theo thời gian), điều này không khó, nhưng nếu Các giá trị phổ biến chỉ là do tải dữ liệu trùng hợp này có thể yêu cầu nhiều công việc bảo trì.

tỷ lệ kèo bóng đá khả năng khác là loại trừ các giá trị khỏi chỉ mục mà khối lượng công việc truy vấn điển hình không quan tâm đến; Điều này được hiển thị trongVí dụ 11-2. Điều này dẫn đến những lợi thế tương tự như được liệt kê ở trên, Nhưng nó ngăn chặn"Không quan tâm"giá trị được truy cập thông qua chỉ mục đó, ngay cả khi một Quét chỉ số có thể có lợi nhuận trong trường hợp đó. Rõ ràng, thiết lập Lên chỉ mục tỷ lệ kèo bóng đá cho loại kịch bản này sẽ yêu cầu rất nhiều chăm sóc và thử nghiệm.

Ví dụ 11-2. Thiết lập một chỉ mục tỷ lệ kèo bóng đá để Loại trừ các giá trị không thú vị

Nếu bạn có một bảng có chứa cả hóa đơn và không có đơn đặt hàng, nơi các đơn đặt hàng không có tỷ lệ kèo bóng đá nhỏ của tổng số bảng và đó là những hàng được truy cập nhiều nhất, bạn có thể cải thiện hiệu suất bằng cách tạo một chỉ mục trên hàng không có hàng. Lệnh để tạo chỉ mục sẽ giống như cái này:

14391_14480

tỷ lệ kèo bóng đá truy vấn có thể sử dụng chỉ mục này sẽ là

Chọn * từ các đơn đặt hàng mà hóa đơn không đúng và đặt hàng_nr <10000;

Tuy nhiên, chỉ tỷ lệ kèo bóng đá cũng có thể được sử dụng trong các truy vấn không liên quanorder_nrall, ví dụ,

Chọn * từ các đơn đặt hàng mà hóa đơn không đúng và số tiền 5000.00;

Điều này không hiệu quả như một chỉ mục tỷ lệ kèo bóng đá trênsố tiền14996_15198

Lưu ý rằng truy vấn này không thể sử dụng chỉ tỷ lệ kèo bóng đá này:

Chọn * từ đơn đặt hàng trong đó Order_NR = 3501;

Đơn hàng 3501 có thể nằm trong số những người được lập hóa đơn hoặc trong số những người chưa được giải quyết đơn đặt hàng.

Ví dụ 11-2cũng minh họa rằng cột được lập chỉ tỷ lệ kèo bóng đá và cột được sử dụng trong vị ngữ không cần phải khớp.PostgreSQLHỗ trợ các chỉ mục tỷ lệ kèo bóng đá với các vị ngữ tùy ý, miễn là chỉ các cột của bảng lập chỉ mục có liên quan. Tuy nhiên, hãy nhớ rằng vị ngữ phải phù hợp với các điều kiện được sử dụng trong các truy vấn được cho là để hưởng lợi từ chỉ số. Để chính xác, một chỉ số tỷ lệ kèo bóng đá có thể chỉ được sử dụng trong truy vấn nếu hệ thống có thể nhận ra rằngWHEREĐiều kiện của truy vấn về mặt toán học ngụ ý vị ngữ của chỉ tỷ lệ kèo bóng đá.PostgreSQLKhông có tinh vi Định lý tục ngữ có thể nhận ra tương đương về mặt toán học Biểu thức được viết dưới các hình thức khác nhau. (Không chỉ là tỷ lệ kèo bóng đá sự biến chứng định lý chung vô cùng khó khăn để tạo ra, nó có lẽ sẽ quá chậm để sử dụng thực sự.) Hệ thống có thể nhận biết ý nghĩa bất bình đẳng đơn giản, ví dụ"X <1"ngụ ý"X <2"; nếu không thì điều kiện vị ngữ phải khớp chính xác với tỷ lệ kèo bóng đá của truy vấnWHEREĐiều kiện hoặc chỉ tỷ lệ kèo bóng đá sẽ không được công nhận là có thể sử dụng được.

Sử dụng thứ ba có thể cho các chỉ mục tỷ lệ kèo bóng đá không yêu cầu chỉ mục được sử dụng trong các truy vấn ở tất cả. Ý tưởng ở đây là tạo ra một Chỉ mục duy nhất trên một tập hợp con của bảng, như trongVí dụ 11-3. Cái này thực thi tính độc đáo giữa các hàng thỏa mãn chỉ tỷ lệ kèo bóng đá vị ngữ, mà không ràng buộc những người không.

Ví dụ 11-3. Thiết lập tỷ lệ kèo bóng đá duy nhất Chỉ mục

Giả sử rằng chúng ta có tỷ lệ kèo bóng đá bảng mô tả kết quả kiểm tra. Chúng tôi muốn đảm bảo rằng chỉ có tỷ lệ kèo bóng đá"Thành công"mục nhập cho tỷ lệ kèo bóng đá chủ đề nhất định và kết hợp mục tiêu, nhưng có thể có bất kỳ số lượng"Không thành công"mục. Đây là tỷ lệ kèo bóng đá Cách để làm điều đó:

Tạo bài kiểm tra bảng (
    văn bản chủ đề,
    văn bản tỷ lệ kèo bóng đá tiêu,
    thành công boolean,
    ...
);

Tạo chỉ tỷ lệ kèo bóng đá duy nhất Tests_Success_Constraint trên các bài kiểm tra (chủ đề, tỷ lệ kèo bóng đá tiêu)
    Thành công ở đâu;

Đây là tỷ lệ kèo bóng đá cách thực hiện nó đặc biệt hiệu quả khi ở đó là tỷ lệ kèo bóng đá vài bài kiểm tra thành công và nhiều bài kiểm tra không thành công.

Cuối cùng, một chỉ mục tỷ lệ kèo bóng đá cũng có thể được sử dụng để ghi đè Lựa chọn kế hoạch truy vấn của hệ thống. Nó có thể xảy ra rằng các tập dữ liệu với Các bản phân phối đặc biệt sẽ khiến hệ thống sử dụng một chỉ mục khi Nó thực sự không nên. Trong trường hợp đó, chỉ mục có thể được thiết lập để rằng nó không có sẵn cho truy vấn vi phạm. Thông thường,PostgreSQLLàm cho hợp lý lựa chọn về việc sử dụng chỉ tỷ lệ kèo bóng đá (ví dụ: nó tránh chúng khi truy xuất Các giá trị chung, vì vậy ví dụ trước đó thực sự chỉ lưu chỉ tỷ lệ kèo bóng đá kích thước, không bắt buộc phải tránh sử dụng chỉ số) và tổng hợp Lựa chọn kế hoạch không chính xác là nguyên nhân cho báo cáo lỗi.

Hãy nhớ rằng việc thiết lập một chỉ mục tỷ lệ kèo bóng đá cho biết rằng Bạn biết ít nhất là nhiều như người lập kế hoạch truy vấn biết, trong Đặc biệt bạn biết khi nào một chỉ số có thể có lợi nhuận. Hình thành Kiến thức này đòi hỏi kinh nghiệm và sự hiểu biết về cách chỉ mục trongPostgreSQLCông việc. TRONG Hầu hết các trường hợp, lợi thế của chỉ số tỷ lệ kèo bóng đá so với chỉ mục thông thường sẽ không nhiều.

Thông tin thêm về các chỉ mục tỷ lệ kèo bóng đá có thể được tìm thấy trongTrường hợp cho các chỉ mục tỷ lệ kèo bóng đá, lập chỉ mục tỷ lệ kèo bóng đá trong Postgres: Nghiên cứu dự ánChỉ số tỷ lệ kèo bóng đá tổng quát.