AChỉ mục kèo bóng đá hôm nay và ngày mailà kèo bóng đá hôm nay và ngày mai chỉ mục được xây dựng trên kèo bóng đá hôm nay và ngày mai tập hợp con của kèo bóng đá hôm nay và ngày mai bảng; tập hợp con được xác định bởi kèo bóng đá hôm nay và ngày mai điều kiện biểu thức (được gọi làvị ngữcủa Chỉ số kèo bóng đá hôm nay và ngày mai). Chỉ mục chỉ chứa các mục cho bảng đó hàng thỏa mãn vị ngữ.
Một động lực chính cho các chỉ mục kèo bóng đá hôm nay và ngày mai là tránh lập chỉ mục giá trị chung. Vì một truy vấn tìm kiếm một giá trị chung (một chiếm hơn một vài phần trăm của tất cả các hàng bảng) Dù sao cũng sẽ không sử dụng chỉ mục, không có điểm nào trong việc giữ chúng Hàng trong chỉ mục ở tất 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ụ 7-1Hiển thị kèo bóng đá hôm nay và ngày mai ứng dụng có thể của ý tưởng này.
Ví dụ 7-1. Thiết lập một chỉ mục kèo bóng đá hôm nay và ngày mai để 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 IP của tổ chức nhưng kèo bóng đá hôm nay và ngày mai số đến từ nơi khác (giả sử, nhân viên trên Kết nối quay số). Nếu tìm kiếm của bạn theo IP chủ yếu cho 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ử kèo bóng đá hôm nay và ngày mai 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 bóng đá hôm nay và ngày mai 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 bóng đá hôm nay và ngày mai access_log_client_ip_ix trên access_log (client_ip) Trong đó không (client_ip inet '192.168.100.0' và client_ip <inet '192.168.100.255');
kèo bóng đá hôm nay và ngày mai truy vấn điển hình có thể sử dụng chỉ mục này sẽ là:
12393_12484
kèo bóng đá hôm nay và ngày mai truy vấn không thể sử dụng chỉ mục này là:
Chọn * từ access_log trong đó client_ip = inet '192.168.100.23';
Quan sát rằng loại chỉ mục kèo bóng đá hôm nay và ngày mai 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ì.
kèo bóng đá hôm nay và ngày mai 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ụ 7-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ị từ việc truy cập thông qua chỉ mục đó, ngay cả khi quét chỉ mục có thể có lợi nhuận trong trường hợp đó. Rõ ràng, thiết lập kèo bóng đá hôm nay và ngày mai Các chỉ mục 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ụ 7-2. Thiết lập một chỉ mục kèo bóng đá hôm nay và ngày mai để 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ó kèo bóng đá hôm nay và ngày mai 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:
14148_14237
kèo bóng đá hôm nay và ngày mai 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à Order_NR <10000;
Tuy nhiên, chỉ kèo bóng đá hôm nay và ngày mai 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 bóng đá hôm nay và ngày mai trênSố tiềnHệ 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 chưa được thực hiện, chỉ sử dụng chỉ mục kèo bóng đá hôm nay và ngày mai này Để 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 bóng đá hôm nay và ngày mai 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ụ 7-2cũng minh họa rằng cột được lập chỉ kèo bóng đá hôm nay và ngày mai 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 bóng đá hôm nay và ngày mai 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ố kèo bóng đá hôm nay và ngày mai có thể chỉ được sử dụng trong một truy vấn nếu hệ thống có thể nhận ra rằng truy vấn Trong đó điều kiện về mặt toán họcngụ ývị ngữ của chỉ kèo bóng đá hôm nay và ngày mai.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 Các vị từ được viết dưới các hình thức khác nhau. (Không chỉ là như vậy kèo bóng đá hôm nay và ngày mai sự biến đổi định lý chung cực kỳ khó tạo ra, nó sẽ có lẽ là 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 truy vấn của điều kiện hoặc chỉ kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai 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ụ 7-3. Cái này thực thi tính độc đáo giữa các hàng thỏa mãn chỉ kèo bóng đá hôm nay và ngày mai vị ngữ, mà không ràng buộc những người không.
Ví dụ 7-3. Thiết lập kèo bóng đá hôm nay và ngày mai duy nhất Chỉ mục
Giả sử rằng chúng ta có kèo bóng đá hôm nay và ngày mai 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 bóng đá hôm nay và ngày mai"Thành công"mục nhập cho kèo bóng đá hôm nay và ngày mai 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à kèo bóng đá hôm nay và ngày mai Cách để làm điều đó:
Tạo bài kiểm tra bảng (văn bản chủ đề, văn bản kèo bóng đá hôm nay và ngày mai tiêu, thành công bool, ...); Tạo chỉ kèo bóng đá hôm nay và ngày mai duy nhất Tests_Success_Constraint trên các bài kiểm tra (chủ đề, kèo bóng đá hôm nay và ngày mai tiêu) Thành công ở đâu;
Đây là kèo bóng đá hôm nay và ngày mai cách thực hiện nó đặc biệt hiệu quả khi ở đó là kèo bóng đá hôm nay và ngày mai vài thử nghiệm thành công và nhiều thử nghiệm không thành công.
Cuối cùng, một chỉ mục kèo bóng đá hôm nay và ngày mai 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ỉ kèo bóng đá hôm nay và ngày mai (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ỉ kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai 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ố kèo bóng đá hôm nay và ngày mai 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 kèo bóng đá hôm nay và ngày mai có thể được tìm thấy trongTrường hợp cho các chỉ mục kèo bóng đá hôm nay và ngày mai, lập chỉ mục kèo bóng đá hôm nay và ngày mai trong Postgres: Nghiên cứu dự ánvàChỉ mục kèo bóng đá hôm nay và ngày mai tổng quát.