tỷ lệ kèo bóng đá
mệnh đềCó thể điều khiển trình lập kế hoạch truy vấn ở một mức độ nào đó bằng cách sử dụng rõ ràngtỷ lệ kèo bóng đá
12337_12403
Trong một truy vấn tỷ lệ kèo bóng đá đơn giản, chẳng hạn như:
Chọn * từ a, b, c trong đó a.id = b.id và B.Ref = c.id;
12549_12683WHERE
điều kiệna.id = B.ID
, và sau đó tỷ lệ kèo bóng đá C với bảng đã tỷ lệ kèo bóng đá này, sử dụng cái kiaWHERE
12857_13122WHERE
mệnh đề cho phép tối ưu hóa sự tỷ lệ kèo bóng đá. (Tất cả các tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá để 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ế hoạch 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 số lượng khả năng hạn chế. (Ngưỡng chuyển đổi được đặt bởigeqo_thresholdtỷ lệ kèo bóng đá 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ể.
Khi truy vấn liên quan đến các tỷ lệ kèo bóng đá bên ngoài, người lập kế hoạch có ít tự do hơn so với các tỷ lệ kèo bóng đá đơn giản (bên trong). Ví dụ: xem xét:
14646_14722
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 tỷ lệ kèo bóng đá B và C. Do đó, người lập kế hoạch không có lựa chọn nào về thứ tự tỷ lệ kèo bóng đá ở đây: nó phải tỷ lệ kèo bóng đá B với C và sau đó tỷ lệ kèo bóng đá A với 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ự tỷ lệ kèo bóng đá là an toàn. Ví dụ, đã cho:
15272_15352
Có hợp lệ khi tỷ lệ kèo bóng đá A đến B hoặc C trước tiên. Hiện tại, chỉtỷ lệ kèo bóng đá đầy đủ
hoàn toàn hạn chế thứ tự tỷ lệ kèo bóng đá. Hầu hết các trường hợp thực tế liên quan đếntỷ lệ kèo bóng đá trái
hoặctỷ lệ kèo bóng đá bên phải
có thể được sắp xếp lại ở một mức độ nào đó.
Cú pháp tỷ lệ kèo bóng đá bên trong rõ ràng (tỷ lệ kèo bóng đá bên trong
, tỷ lệ kèo bóng đá chéo
hoặc Unadornedtỷ lệ kèo bóng đá
) 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ự tỷ lệ kèo bóng đá.
Mặc dù hầu hết các loạitỷ lệ kèo bóng đá
Không hoàn toàn hạn chế thứ tự tỷ lệ kèo bóng đá, có thể hướng dẫnPostgreSQLTruy vấn kế hoạch để điều trị tất cảtỷ lệ kèo bóng đá
Các điều khoản như ràng buộc thứ tự tỷ lệ kèo bóng đá. 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 tỷ lệ kèo bóng đá B Cross tỷ lệ kèo bóng đá C WHERE a.id = B.Id và B.Ref = c.Id; Chọn * từ một lần tỷ lệ kèo bóng đá (B tỷ lệ kèo bóng đá 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ế hoạch để tôn vinhtỷ lệ kèo bóng đá
Đặt hàng, thứ hai và thứ ba mất ít thời gian hơn để lập kế hoạch 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ự tỷ lệ kèo bóng đá được trình bày bởi rõ ràngtỷ lệ kèo bóng đá
S, đặttỷ lệ kèo bóng đá gia_collapse_limittỷ lệ kèo bóng đá số thời gian chạy thành 1. (Các giá trị có thể khác được thảo luận dưới đây.)
Bạn không cần phải hạn chế thứ tự tỷ lệ kèo bóng đá hoàn toàn để cắt giảm thời gian tìm kiếm, vì bạn có thể sử dụngtỷ lệ kèo bóng đá
Người vận hành trong các mục của đơn giảntừ
Danh sách. Ví dụ: xem xét:
Chọn * từ một chéo tỷ lệ kèo bóng đá b, c, d, e trong đó ...;
vớitỷ lệ kèo bóng đá gia_collapse_limit
= 1, điều này buộc người lập kế hoạch tỷ lệ kèo bóng đá A đến B trước khi tỷ lệ kèo bóng đá 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ự tỷ lệ kèo bóng đá 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 quatỷ lệ kèo bóng đá
Cú 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ế hoạch đang sụp đổ các nhóm phụ vào truy vấn cha mẹ của họ. Ví dụ: xem xét:
Chọn * Từ x, y, (Chọn * từ a, b, c trong đó một cái gì đó) như ss Nơi mà một cái gì đó;
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ự tỷ lệ kèo bóng đá; Chế độ xemChọn
Quy tắc sẽ được chèn thay cho tỷ lệ kèo bóng đá 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ì đó;
Điều này thường dẫn đến một kế hoạch tốt hơn so với lập kế hoạch riêng biệt. (Ví dụ: bên ngoàiWHERE
18888_19394from_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 tỷ lệ kèo bóng đá số thời gian chạy này lên hoặc xuống.
from_collapse_limitvàtỷ lệ kèo bóng đá 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ế hoạch sẽHồiFlatten OutxôngSubqueries và các điều khiển khác khi nó sẽ làm phẳng các lần tỷ lệ kèo bóng đá rõ ràng. Thông thường bạn sẽ đặttỷ lệ kèo bóng đá gia_collapse_limit
bằngfrom_collapse_limit
20202_20266tỷ lệ kèo bóng đá gia_collapse_limit
đến 1 (nếu bạn muốn kiểm soát thứ tự tỷ lệ kèo bóng đá với các tỷ lệ kèo bóng đá 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.