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.
9332_9388hiện tạiPhiên bản hoặc kèo chấp bóng đá hôm nay trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

11.8. Chỉ mục kèo chấp bóng đá hôm nay

AChỉ mục kèo chấp bóng đá hôm naylà kèo chấp bóng đá hôm nay chỉ mục được xây dựng trên kèo chấp bóng đá hôm nay tập hợp con của bảng; tập hợp con được xác định bởi kèo chấp bóng đá hôm nay biểu thức có điều kiện (được gọi làvị ngữcủa chỉ số kèo chấp bóng đá hôm nay). Chỉ số chỉ chứa các mục cho các hàng bảng đáp ứng vị ngữ. Các chỉ mục kèo chấp bóng đá hôm nay là một tính năng chuyên dụng, nhưng có một số tình huống trong đó chúng hữu ích.

Một lý do chính cho việc sử dụng chỉ mục kèo chấp bóng đá hôm nay là để tránh lập chỉ mục các giá trị chung. Vì một truy vấn tìm kiếm một giá trị chung (một truy vấn cho hơn một vài phần trăm của tất cả các hàng bảng) sẽ không sử dụng chỉ mục, nên không có điểm nào trong việc giữ các hàng đó trong chỉ mục. Điều này làm giảm kích thước của chỉ số, sẽ tăng tốc các truy vấn sử dụng chỉ mục. Nó cũng sẽ tăng tốc nhiều hoạt động cập nhật bảng vì chỉ mục không cần được cập nhật trong mọi trường hợp.Ví dụ 11-1Hiển thị ứng dụng có thể của ý tưởng này.

Ví dụ 11-1. Thiết lập chỉ mục kèo chấp bóng đá hôm nay để 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 cơ sở dữ liệu. Hầu hết các quyền truy cập bắt nguồn từ phạm vi địa chỉ IP của tổ chức của bạn nhưng kèo chấp bóng đá hôm nay 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 các tìm kiếm của bạn theo IP chủ yếu cho các truy cập bên ngoài, có lẽ bạn không cần phải lập chỉ mục phạm vi IP tương ứng với mạng con của tổ chức của bạn.

Giả sử kèo chấp bóng đá hôm nay bảng như thế này:

Tạo bảng access_log (
    url varchar,
    client_ip inet,
    ...
);

Để tạo một chỉ mục kèo chấp bóng đá hôm nay 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:

Tạo chỉ kèo chấp bóng đá hôm nay access_log_client_ip_ix trên access_log (client_ip)
WHERE KHÔNG (client_ip inet '192.168.100.0' và
           client_ip <inet '192.168.100.255');

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

12510_12599

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

Chọn *
Từ access_log
WHERE client_ip = inet '192.168.100,23';

Quan sát rằng loại chỉ số kèo chấp bóng đá hôm nay này yêu cầu các giá trị chung phải được xác định trước, vì vậy các chỉ mục kèo chấp bóng đá hôm nay như vậy được sử dụng tốt nhất cho các phân phối dữ liệu không thay đổi. Các chỉ mục đôi khi có thể được tái tạo để điều chỉnh các bản phân phối dữ liệu mới, nhưng điều này thêm nỗ lực bảo trì.

Một cách sử dụng có thể khác cho một chỉ mục kèo chấp bóng đá hôm nay 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; Đ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"Các giá trị từ việc được truy cập thông qua chỉ mục đó, ngay cả khi quét chỉ mục có thể mang lại lợi nhuận trong trường hợp đó. Rõ ràng, việc thiết lập các chỉ mục kèo chấp bóng đá hôm nay cho loại kịch bản này sẽ đòi hỏi rất nhiều sự chăm sóc và thử nghiệm.

Ví dụ 11-2. Thiết lập chỉ mục kèo chấp bóng đá hôm nay để loại trừ các giá trị không quan tâm

Nếu bạn có kèo chấp bóng đá hôm nay bảng chứa cả đơn đặt hàng được lập hóa đơn và không được thanh toán, trong đó các đơn đặt hàng không có phần 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 kèo chấp bóng đá hôm nay chỉ mục trên các hàng không được bảo hiểm. Lệnh để tạo chỉ mục sẽ trông như thế này:

14112_14199

kèo chấp bóng đá hôm nay 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ỉ kèo chấp bóng đá hôm nay 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 kèo chấp bóng đá hôm nay trênsố tiềnCột sẽ là, vì hệ thống phải quét toàn bộ chỉ mục. Tuy nhiên, nếu có tương đối ít đơn đặt hàng không có, sử dụng chỉ số kèo chấp bóng đá hôm nay này chỉ để tìm các đơn đặt hàng không có thể là một chiến thắng.

Lưu ý rằng truy vấn này không thể sử dụng chỉ kèo chấp bóng đá hôm nay này:

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

Đơn hàng 3501 có thể nằm trong số các đơn đặt hàng được lập hóa đơn hoặc chưa được thanh toán.

Ví dụ 11-2cũng minh họa rằng cột được lập chỉ kèo chấp bóng đá hôm nay 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 kèo chấp bóng đá hôm nay với các vị từ tùy ý, miễn là chỉ có các cột của bảng được 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à được hưởng lợi từ chỉ số. Để chính xác, chỉ có thể sử dụng chỉ mục kèo chấp bóng đá hôm nay 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ị từ của chỉ kèo chấp bóng đá hôm nay.PostgreSQL15786_16125"X <1"ngụ ý"X <2"; Nếu không, điều kiện vị ngữ phải khớp chính xác với kèo chấp bóng đá hôm nay của truy vấnWHEREĐiều kiện hoặc chỉ mục sẽ không được công nhận là có thể sử dụng được. Kết hợp diễn ra tại thời gian lập kế hoạch truy vấn, không phải lúc chạy. Do đó, các điều khoản truy vấn được tham số hóa không hoạt động với một chỉ mục kèo chấp bóng đá hôm nay. Ví dụ: truy vấn đã chuẩn bị với tham số có thể chỉ định"X <?"sẽ không bao giờ ngụ ý"X <2"Đối với tất cả các giá trị có thể của tham số.

Sử dụng thứ ba có thể cho các chỉ mục kèo chấp bóng đá hôm nay không yêu cầu chỉ số được sử dụng trong các truy vấn. Ý tưởng ở đây là tạo 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. Điều này thực thi tính duy nhất giữa các hàng thỏa mãn vị từ chỉ số, mà không ràng buộc những hàng không.

Ví dụ 11-3. Thiết lập một chỉ mục duy nhất kèo chấp bóng đá hôm nay

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

17547_17728

Đây là kèo chấp bóng đá hôm nay cách tiếp cận đặc biệt hiệu quả khi có kèo chấp bóng đá hôm nay 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.

Chỉ số này chỉ cho phép một null trong cột được lập chỉ mục bằng cách sử dụng mệnh đề chỉ mục kèo chấp bóng đá hôm nay để chỉ xử lý các giá trị cột null và sử dụng mệnh đề chỉ mục biểu thức để chỉ mụctruethay vìnull:

18121_18214

Cuối cùng, một chỉ mục kèo chấp bóng đá hôm nay cũng có thể được sử dụng để ghi đè các lựa chọn kế hoạch truy vấn của hệ thống. Ngoài ra, các tập dữ liệu với các bản phân phối đặc biệt có thể 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 để nó không có sẵn cho truy vấn vi phạm. Thông thường,PostgreSQL18568_18824

Hãy nhớ rằng việc thiết lập một chỉ mục kèo chấp bóng đá hôm nay cho biết rằng bạn biết ít nhất là nhiều như trình lập kế hoạch truy vấn biết, đặc biệt là bạn biết khi nào một chỉ mục có thể mang lại 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 các chỉ mục trongPostgreSQL19124_19218

Thông tin thêm về các chỉ mục kèo chấp bóng đá hôm nay có thể được tìm thấy trong Trường hợp cho các chỉ mục kèo chấp bóng đá hôm nay , lập chỉ mục kèo chấp bóng đá hôm nay trong Postgres: Dự án nghiên cứuChỉ số kèo chấp bóng đá hôm nay tổng quát (phiên bản lưu trữ) .