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 / 7.1

14.3. Kiểm soát người lập kèo bóng đá hôm nay và ngày mai với rõ ràngkèo bóng đá hôm nay và ngày maimệnh đề

Có thể điều khiển trình lập kèo bóng đá hôm nay và ngày mai truy vấn ở một mức độ nào đó bằng cách sử dụng rõ ràngkèo bóng đá hôm nay và ngày maiCú pháp. Để xem tại sao điều này quan trọng, trước tiên chúng ta cần một số nền.

Trong một truy vấn kèo bóng đá hôm nay và ngày mai đơn giản, chẳng hạn như:

Chọn * từ a, b, c trong đó a.id = b.id và B.Ref = c.id;

Người lập kế hoạch miễn phí kèo bóng đá hôm nay và ngày mai các bảng đã cho theo bất kỳ thứ tự nào. Ví dụ: nó có thể tạo một kế hoạch truy vấn kèo bóng đá hôm nay và ngày mai A đến B, sử dụngWHEREđiều kiệna.id = B.ID, và sau đó kèo bóng đá hôm nay và ngày mai C với bảng đã kèo bóng đá hôm nay và ngày mai này, sử dụng cái kiaWHERE12466_12731WHEREmệnh đề cho phép tối ưu hóa sự kèo bóng đá hôm nay và ngày mai. (Tất cả các kèo bóng đá hôm nay và ngày mai trongPostgreSQLNgười thực thi xảy ra giữa hai bảng đầu vào, do đó, cần phải xây dựng kết quả trong một hoặc một trong những thời trang này.) Điểm quan trọng là các khả năng kèo bóng đá hôm nay và ngày mai khác nhau này cho kết quả tương đương về mặt ngữ nghĩa nhưng có thể có chi phí thực hiện cực kỳ khác nhau. Do đó, người lập kế hoạch sẽ khám phá tất cả chúng để cố gắng tìm kế hoạch truy vấn hiệu quả nhất.

Khi một truy vấn chỉ liên quan đến hai hoặc ba bảng, không có nhiều lệnh kèo bóng đá hôm nay và ngày mai để lo lắng. Nhưng số lượng đơn đặt hàng có thể tăng theo cấp số nhân khi số lượng bảng mở rộng. Ngoài mười bảng đầu vào, không còn thực tế để tìm kiếm toàn diện tất cả các khả năng, và thậm chí trong sáu hoặc bảy bảng lập kế hoạch có thể mất một thời gian dài khó chịu. Khi có quá nhiều bảng đầu vào,PostgreSQLNgười lập kèo bóng đá hôm nay và ngày mai sẽ chuyển từ tìm kiếm toàn diện sang ADi truyềnTìm kiếm xác suất thông qua một số lượng hạn chế các khả năng. (Ngưỡng chuyển đổi được đặt bởigeqo_thresholdkèo bóng đá hôm nay và ngày mai số thời gian chạy.) Tìm kiếm di truyền mất ít thời gian hơn, nhưng nó sẽ không nhất thiết tìm thấy kế hoạch tốt nhất có thể.

14094_14222

14255_14331

Mặc dù các hạn chế của truy vấn này tương tự như ví dụ trước đó, ngữ nghĩa là khác nhau vì một hàng phải được phát ra cho mỗi hàng của A không có hàng phù hợp trong kèo bóng đá hôm nay và ngày mai B và C. Do đó, người lập kế hoạch không có lựa chọn nào về thứ tự kèo bóng đá hôm nay và ngày mai ở đây: nó phải kèo bóng đá hôm nay và ngày mai B với C và sau đó kèo bóng đá hôm nay và ngày mai kết quả đó. Theo đó, truy vấn này mất ít thời gian hơn để lập kế hoạch so với truy vấn trước đó. Trong các trường hợp khác, người lập kế hoạch có thể xác định rằng nhiều thứ tự kèo bóng đá hôm nay và ngày mai là an toàn. Ví dụ, đã cho:

14881_14961

Có hợp lệ khi kèo bóng đá hôm nay và ngày mai A đến B hoặc C trước tiên. Hiện tại, chỉkèo bóng đá hôm nay và ngày mai đầy đủhoàn toàn hạn chế thứ tự kèo bóng đá hôm nay và ngày mai. Hầu hết các trường hợp thực tế liên quan đếnkèo bóng đá hôm nay và ngày mai tráihoặckèo bóng đá hôm nay và ngày mai bên phảicó thể được sắp xếp lại ở một mức độ nào đó.

Cú pháp nối bên trong rõ ràng (kèo bóng đá hôm nay và ngày mai bên trong, kèo bóng đá hôm nay và ngày mai chéohoặc Unadornedkèo bóng đá hôm nay và ngày mai) về mặt ngữ nghĩa giống như liệt kê các quan hệ đầu vào trongtừ, vì vậy nó không ràng buộc thứ tự kèo bóng đá hôm nay và ngày mai.

Mặc dù hầu hết các loạikèo bóng đá hôm nay và ngày maiKhông hoàn toàn hạn chế thứ tự kèo bóng đá hôm nay và ngày mai, có thể hướng dẫnPostgreSQLTruy vấn kèo bóng đá hôm nay và ngày mai để điều trị tất cảkèo bóng đá hôm nay và ngày maiCác điều khoản như ràng buộc theo thứ tự kèo bóng đá hôm nay và ngày mai. Ví dụ: ba truy vấn này tương đương về mặt logic:

Chọn * từ a, b, c trong đó a.id = B.Id và B.Ref = c.id;
Chọn * từ một chéo kèo bóng đá hôm nay và ngày mai B Cross kèo bóng đá hôm nay và ngày mai C WHERE a.id = B.Id và B.Ref = c.Id;
Chọn * từ một lần kèo bóng đá hôm nay và ngày mai (B kèo bóng đá hôm nay và ngày mai C trên (B.REF = C.ID)) trên (a.id = B.ID);

Nhưng nếu chúng ta nói với người lập kèo bóng đá hôm nay và ngày mai để tôn vinhkèo bóng đá hôm nay và ngày maiĐặt hàng, thứ hai và thứ ba mất ít thời gian hơn để lập kèo bóng đá hôm nay và ngày mai so với đầu tiên. Hiệu ứng này không đáng lo ngại chỉ cho ba bảng, nhưng nó có thể là cứu cánh với nhiều bảng.

Để buộc người lập kế hoạch tuân theo thứ tự kèo bóng đá hôm nay và ngày mai được trình bày bằng cách rõ ràngkèo bóng đá hôm nay và ngày mais, đặtkèo bóng đá hôm nay và ngày mai gia_collapse_limitkèo bóng đá hôm nay và ngày mai số thời gian chạy thành 1. (Các giá trị có thể khác được thảo luận bên dưới.)

Bạn không cần phải hạn chế thứ tự kèo bóng đá hôm nay và ngày mai hoàn toàn để cắt giảm thời gian tìm kiếm, vì bạn có thể sử dụngkèo bóng đá hôm nay và ngày maiNgười vận hành trong các mục của một đơn giảntừDanh sách. Ví dụ: xem xét:

Chọn * từ một chéo kèo bóng đá hôm nay và ngày mai b, c, d, e trong đó ...;

vớikèo bóng đá hôm nay và ngày mai gia_collapse_limit= 1, điều này buộc người lập kế hoạch kèo bóng đá hôm nay và ngày mai A đến B trước khi kèo bóng đá hôm nay và ngày mai chúng với các bảng khác, nhưng không hạn chế các lựa chọn của nó. Trong ví dụ này, số lượng đơn đặt hàng có thể giảm được giảm theo hệ số 5.

Kiềm chế tìm kiếm của người lập kế hoạch theo cách này là một kỹ thuật hữu ích để giảm thời gian lập kế hoạch và hướng người lập kế hoạch đến một kế hoạch truy vấn tốt. Nếu người lập kế hoạch chọn thứ tự kèo bóng đá hôm nay và ngày mai xấu theo mặc định, bạn có thể buộc nó chọn một thứ tự tốt hơn thông quakèo bóng đá hôm nay và ngày maiCú pháp - Giả sử rằng bạn biết một thứ tự tốt hơn, đó là. Thử nghiệm được khuyến nghị.

Một vấn đề liên quan chặt chẽ ảnh hưởng đến thời gian lập kèo bóng đá hôm nay và ngày mai đang sụp đổ các nhóm phụ vào truy vấn cha mẹ của họ. Ví dụ: xem xét:

17858_17952

Tình huống này có thể phát sinh từ việc sử dụng một quan điểm có chứa một sự kèo bóng đá hôm nay và ngày mai; Chế độ xemChọnQuy tắc sẽ được chèn thay cho kèo bóng đá hôm nay và ngày mai chiếu xem, mang lại một truy vấn giống như ở trên. Thông thường, người lập kế hoạch sẽ cố gắng thu gọn trình điều khiển con vào cha mẹ, mang lại:

Chọn * Từ x, y, a, b, c trong đó một cái gì đó và một cái gì đó;

18362_18465WHERECác điều kiện có thể sao cho việc nối X đến lần đầu tiên loại bỏ nhiều hàng của A, do đó tránh được sự cần thiết phải hình thành đầu ra logic đầy đủ của truy vấn con.) Nhưng đồng thời, chúng tôi đã tăng thời gian lập kế hoạch; Ở đây, chúng tôi có một vấn đề kèo bóng đá hôm nay và ngày mai năm chiều thay thế hai vấn đề kèo bóng đá hôm nay và ngày mai ba chiều riêng biệt. Do sự tăng trưởng theo cấp số nhân của số lượng khả năng, điều này tạo ra sự khác biệt lớn. Người lập kế hoạch cố gắng tránh bị mắc kẹt trong các vấn đề tìm kiếm kèo bóng đá hôm nay và ngày mai khổng lồ bằng cách không sụp đổ một trình truy vấn con nếu nhiều hơnfrom_collapse_limit từCác mục sẽ dẫn đến truy vấn cha mẹ. Bạn có thể đánh đổi thời gian lập kế hoạch chống lại chất lượng kế hoạch bằng cách điều chỉnh kèo bóng đá hôm nay và ngày mai số thời gian chạy này lên hoặc xuống.

from_collapse_limitkèo bóng đá hôm nay và ngày mai gia_collapse_limitđược đặt tên tương tự vì chúng làm gần như điều tương tự: một điều khiển khi người lập kèo bóng đá hôm nay và ngày mai sẽFlatten OutHồiCác nhóm con và các điều khiển khác khi nó sẽ làm phẳng các kết nối rõ ràng. Thông thường bạn sẽ đặtkèo bóng đá hôm nay và ngày mai gia_collapse_limitbằngfrom_collapse_limit19811_19875kèo bóng đá hôm nay và ngày mai gia_collapse_limitđến 1 (nếu bạn muốn kiểm soát thứ tự kèo bóng đá hôm nay và ngày mai với các kèo bóng đá hôm nay và ngày mai rõ ràng). Nhưng bạn có thể đặt chúng khác nhau nếu bạn đang cố gắng điều chỉnh sự đánh đổi giữa thời gian lập kế hoạch và thời gian chạy.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.