Postgresql 8.1.23 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | Chương 13. Mẹo hiệu suất | Chuyển tiếp nhanh | Tiếp theo |
Có thể điều khiển trình lập kèo bóng đá hom nay truy vấn ở một mức độ nào đó bằng cách Sử dụng rõ ràngkèo bóng đá hom nayCú 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 đá hom nay đơ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 đá hom nay các bảng đã cho theo bất kỳ thứ tự nào. Vì Ví dụ, nó có thể tạo ra một kế hoạch truy vấn kèo bóng đá hom nay từ A đến B, sử dụng TheWHEREđiều kiệna.id = B.ID, và sau đó kèo bóng đá hom nay C để kèo bóng đá hom nay này bảng, sử dụng cái khácWHEREĐiều kiện. Hoặc nó có thể kèo bóng đá hom nay B đến C và sau đó kèo bóng đá hom nay A với kết quả đó. Hoặc nó có thể kèo bóng đá hom nay A đến C và sau đó kèo bóng đá hom nay cùng họ với B - nhưng đó sẽ là không hiệu quả, vì sản phẩm cartesian đầy đủ của A và C sẽ phải được hình thành, không có điều kiện áp dụng trongWHEREmệnh đề cho phép tối ưu hóa kèo bóng đá hom nay. (Tất cả các kèo bóng đá hom nay trongPostgreSQLNgười thực thi xảy ra giữa hai đầu vào các bảng, vì vậy cần phải xây dựng kết quả trong một hoặc một trong những thời trang khác.) Điểm quan trọng là những điều này Các khả năng kèo bóng đá hom nay khác nhau 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 kiếm nhiều nhất Kế hoạch truy vấn hiệu quả.
Khi truy vấn chỉ liên quan đến hai hoặc ba bảng, không có Nhiều người kèo bóng đá hom nay các đơn đặt hàng để lo lắng về. Nhưng số lượng kèo bóng đá hom nay có thể Đơn đặt hàng 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, nó không còn thực tế để thực hiện 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 đá hom nay sẽ chuyển từ tìm kiếm toàn diện cho mộtdi 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_threshold13982_14099
Khi truy vấn liên quan đến kèo bóng đá hom nay bên ngoài, người lập kế hoạch có ít hơn nhiều Tự do hơn nó cho đồng bằng (bên trong) kèo bóng đá hom nay. Ví dụ, coi như
14277_14353
Mặc dù các hạn chế của truy vấn này giống nhau Theo ví dụ trước, ngữ nghĩa là khác nhau bởi 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 Sự kèo bóng đá hom nay của B và C. Do đó, người lập kế hoạch không có lựa chọn kèo bóng đá hom nay Đặt hàng tại đây: Nó phải kèo bóng đá hom nay B đến C và sau đó kèo bóng đá hom nay 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 trước đây Truy vấn.
Cú pháp kèo bóng đá hom nay bên trong rõ ràng (bên trong kèo bóng đá hom nay, kèo bóng đá hom nay chéohoặc Unadornedkèo bóng đá hom nay) 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 cần phải hạn chế thứ tự kèo bóng đá hom nay. Nhưng nó có thể Để hướng dẫnPostgreSQLTruy vấn Người lập kèo bóng đá hom nay để đối xử rõ ràng bên trongkèo bóng đá hom nays như hạn chế thứ tự kèo bóng đá hom nay dù sao. Ví dụ, ba Truy vấn 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 đá hom nay B Cross kèo bóng đá hom nay C WHERE a.id = B.Id và B.Ref = c.Id; Chọn * từ một lần kèo bóng đá hom nay (B kèo bóng đá hom nay 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 đá hom nay để tôn vinhkèo bóng đá hom nayĐặt hàng, thứ hai và thứ ba mất ít thời gian hơn để kèo bóng đá hom nay hơn đầu tiên. Hiệu ứng này không đáng lo ngại cho chỉ có 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èo bóng đá hom nay theokèo bóng đá hom nayĐặt hàng cho các lần nối bên trong, đặtkèo bóng đá hom nay gia_collapse_limitkèo bóng đá hom nay số thời gian chạy thành 1. (Các giá trị có thể khác được thảo luận dưới.)
Bạn không cần phải hạn chế thứ tự kèo bóng đá hom nay hoàn toàn đặt hàng để cắt thời gian tìm kiếm, vì sử dụng là okkèo bóng đá hom nayNgườ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 kèo bóng đá hom nay b, c, d, e trong đó ...;
vớikèo bóng đá hom nay gia_collapse_limit= 1, this buộc người lập kế hoạch kèo bóng đá hom nay A đến B trước khi kèo bóng đá hom nay với họ Bảng, nhưng không hạn chế các lựa chọn của nó khác. Trong này Ví dụ, số lượng đơn đặt hàng có thể có thể giảm được Yếu tố 5.
Hạn 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 để giảm thời gian lập kế hoạch và chỉ đạo người lập kế hoạch cho một kế hoạch truy vấn tốt. Nếu người lập kế hoạch chọn kèo bóng đá hom nay xấu Đặt hàng theo mặc định, bạn có thể buộc nó chọn một đơn đặt hàng tốt hơn thông quakèo bóng đá hom nayCú pháp - giả sử rằng bạn biết về 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 đá hom nay là sụp đổ các nhóm phụ vào truy vấn cha mẹ của họ. Ví dụ, coi như
17275_17369
17380_17463ChọnQuy tắc sẽ được được chèn vào vị trí của kèo bóng đá hom nay chiếu xem, mang lại một truy vấn nhiều Giống như ở trên. Thông thường, người lập kế hoạch sẽ cố gắng sụp đổ Trình truy xuất phụ vào cha mẹ, năng suất
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èo bóng đá hom nay tốt hơn so với kèo bóng đá hom nay Subquery một cách riêng biệt. (Ví dụ: bên ngoàiWHEREĐiều kiện có thể là kết hợp X đến A Đầ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 năm chiều kèo bóng đá hom nay vấn đề thay thế hai vấn đề kèo bóng đá hom nay 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 làm cho một sự khác biệt lớn. Người lập kế hoạch cố gắng tránh nhận Bị mắc kẹt trong các vấn đề tìm kiếm kèo bóng đá hom nay rất lớn bằng cách không sụp đổ Nếu nhiều hơnfrom_collapse_limit từCác mục sẽ dẫn đến cha mẹ truy vấn. 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 đá hom nay số thời gian chạy này lên hoặc xuống.
from_collapse_limitvàkèo bóng đá hom nay gia_collapse_limitđược đặt tên tương tự vì chúng làm gần như giống nhau: một điều khiển khi người lập kèo bóng đá hom nay sẽ"Flatten ngoài"SubSelects và các điều khiển khác khi nó sẽ Flatten ra bên trong rõ ràng kèo bóng đá hom nay. Thông thường bạn sẽ đặtkèo bóng đá hom nay gia_collapse_limitbằngfrom_collapse_limit(Vì vậy, đó là kèo bóng đá hom nay và SubSelects hành động tương tự) hoặc đặtkèo bóng đá hom nay gia_collapse_limitđến 1 (nếu bạn muốn kiểm soát kèo bóng đá hom nay đặt hàng với các kèo bóng đá hom nay rõ ràng). Nhưng bạn có thể đặt chúng khác nhau nếu bạn đang cố gắng tinh chỉnh sự đánh đổi giữa Thời gian lập kế hoạch và thời gian chạy.
Prev | Trang chủ | 20006_20012 |
Thống kê được sử dụng bởi người lập kèo bóng đá hom nay | UP | dân cư a Cơ sở dữ liệu |