AChỉ mục tỷ lệ kèo bóng đá tối naylà tỷ lệ kèo bóng đá tối nay chỉ mục được xây dựng trên tỷ lệ kèo bóng đá tối nay tập hợp con của bảng; tập hợp con được xác định bởi tỷ lệ kèo bóng đá tối nay biểu thức có điều kiện (được gọi làvị ngữcủa chỉ số tỷ lệ kèo bóng đá tối nay). Chỉ số chỉ chứa các mục cho các hàng bảng đáp ứng vị ngữ.
Một lý do chính cho việc sử dụng chỉ mục tỷ lệ kèo bóng đá tối 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.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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nay số đến từ nơi khác (giả sử, nhân viên trên các kết nối quay số).
Giả sử tỷ lệ kèo bóng đá tối nay bảng như thế này:
Tạo bảng access_log (
Để tạo một chỉ mục tỷ lệ kèo bóng đá tối 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ỉ tỷ lệ kèo bóng đá tối nay access_log_client_ip_ix trên access_log (client_ip)
tỷ lệ kèo bóng đá tối nay truy vấn điển hình có thể sử dụng chỉ mục này sẽ là:
Chọn *
tỷ lệ kèo bóng đá tối nay truy vấn không thể sử dụng chỉ mục này là:
Chọn *
Quan sát rằng loại chỉ số tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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ặnkhông quan tâmKhănCác giá trị đượ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, việc thiết lập các chỉ mục tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nay để loại trừ các giá trị không quan tâm
Nếu bạn có tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nay chỉ mục trên các hàng không có. Lệnh để tạo chỉ mục sẽ trông như thế này:
14806_14893
tỷ lệ kèo bóng đá tối 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à Order_NR <10000;
Tuy nhiên, chỉ tỷ lệ kèo bóng đá tối nay cũng có thể được sử dụng trong các truy vấn không liên quanorder_nr
all, 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 đá tối nay trênsố tiền
Cộ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ố tỷ lệ kèo bóng đá tối 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ỉ tỷ lệ kèo bóng đá tối 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ỉ tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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ố.WHERE
Điều kiện của truy vấn về mặt toán học ngụ ý vị từ của chỉ tỷ lệ kèo bóng đá tối nay.PostgreSQLkhông có tỷ lệ kèo bóng đá tối nay biểu tượng định lý tinh vi có thể nhận ra các biểu thức tương đương về mặt toán học được viết dưới các dạng khác nhau. .x <1ngụ ýx <2Hồi; Nếu không, điều kiện vị ngữ phải khớp chính xác với tỷ lệ kèo bóng đá tối nay của truy vấnWHERE
Điều kiện hoặc chỉ tỷ lệ kèo bóng đá tối nay 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.x <?Hồisẽ không bao giờ ngụ ýx <2KhănĐố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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nay
Giả sử rằng chúng ta có tỷ lệ kèo bóng đá tối nay 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 đá tối nayThành côngHồiMục nhập cho tỷ lệ kèo bóng đá tối nay kết hợp chủ đề và mục tiêu nhất định, nhưng có thể có bất kỳ số lượng nàoHồikhông thành côngmục. Đây là tỷ lệ kèo bóng đá tối nay cách để làm điều đó:
Tạo các bài kiểm tra bảng (
Đây là một cách tiếp cận đặc biệt hiệu quả khi có một 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. Cũng có thể chỉ cho phép một null trong một cột bằng cách tạo một chỉ mục tỷ lệ kèo bóng đá tối nay duy nhất vớilà null
Hạn chế.
Cuối cùng, một chỉ mục tỷ lệ kèo bóng đá tối 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.PostgreSQLThực hiện các lựa chọn hợp lý về việc sử dụng chỉ tỷ lệ kèo bóng đá tối nay (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ỉ tiết kiệm kích thước chỉ tỷ lệ kèo bóng đá tối nay, không bắt buộc phải tránh sử dụng chỉ tỷ lệ kèo bóng đá tối nay) và các 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ỉ số tỷ lệ kèo bóng đá tối nay cho thấy 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 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 trongPostgreSQLCông việc. Trong hầu hết các trường hợp, lợi thế của một chỉ số tỷ lệ kèo bóng đá tối nay so với một chỉ số thông thường sẽ là tối thiểu.Ví dụ 11.4.
Ví dụ 11.4. Không sử dụng các chỉ mục tỷ lệ kèo bóng đá tối nay để thay thế cho phân vùng
Bạn có thể bị cám dỗ để tạo ra một tập hợp lớn các chỉ mục tỷ lệ kèo bóng đá tối nay không chồng chéo, ví dụ
Tạo chỉ tỷ lệ kèo bóng đá tối nay myTable_CAT_1 trên mytable (dữ liệu) trong đó loại = 1;n
trên mytable (dữ liệu) trong đó loại =n
;
Đây là tỷ lệ kèo bóng đá tối nay ý tưởng tồi! Gần như chắc chắn, bạn sẽ tốt hơn với tỷ lệ kèo bóng đá tối nay chỉ mục phi thành phần duy nhất, được tuyên bố giống như
Tạo chỉ tỷ lệ kèo bóng đá tối nay myTable_cat_data trên mytable (danh tỷ lệ kèo bóng đá tối nay, dữ liệu);
(Đặt cột danh tỷ lệ kèo bóng đá tối nay lên hàng đầu, vì những lý do được mô tả trongPhần 11.321464_21913
Nếu bảng của bạn đủ lớn để tỷ lệ kèo bóng đá tối nay chỉ mục thực sự là tỷ lệ kèo bóng đá tối nay ý tưởng tồi, bạn nên xem xét sử dụng phân vùng thay thế (xemPhần 5.10). Với cơ chế đó, hệ thống hiểu rằng các bảng và chỉ tỷ lệ kèo bóng đá tối nay không chồng chéo, cho đến nay có thể thực hiện tốt hơn.
Thông tin thêm về các chỉ mục tỷ lệ kèo bóng đá tối nay có thể được tìm thấy trong[Ston89b], [Olson93]và[Seshadri95].