bắt đầu bằngPostgres7.1 có thể kiểm soát người lập kế hoạch truy vấn ở một mức độ nào đó Sử dụng cú pháp kèo bóng đá hom nay rõ ràng. Để xem tại sao điều này quan trọng, chúng tôi trước tiên 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í dụ, nó có thể tạo ra một kế hoạch truy vấn kèo bóng đá hom nay A đến B, sử dụng mệnh đề where a.id = b.id, và sau đó kèo bóng đá hom nay C để kèo bóng đá hom nay vào Bảng, sử dụng điều khoản khác. Hoặc nó có thể kèo bóng đá hom nay B đến C và Sau đó kèo bóng đá hom nay một 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 họ với B --- nhưng điều đó sẽ không hiệu quả, vì đầy đủ Sản phẩm của A và C sẽ phải được hình thành, có Không áp dụng ở đâu mệnh đề để cho phép tối ưu hóa sự kèo bóng đá hom nay. (Tất cả kèo bóng đá hom nay trongPostgresNgười thực thi xảy ra giữa hai bảng đầu vào, vì vậy cần phải xây dựng dẫn đến một hoặc một trong những thời trang này.) Điểm quan trọng là rằng những khả năng kèo bóng đá hom nay khác nhau này cung cấp về mặt ngữ nghĩa Kết quả tương đương 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.
12616_13042PostgresNgười lập kế kèo bóng đá hom nay sẽ chuyển từ toàn diện Tìm kiếm đến Adi truyền13167_13331Hướng dẫn của Quản trị viên.) 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 phải tìm thấy kế kèo bóng đá hom nay tốt nhất có thể.
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ư
13651_13732Mặ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 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 đá hom nay của B và C. Do đó, người lập kế hoạch không có lựa chọn đặt hàng kèo bóng đá hom nay Dướ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.
inPostgres7.1, người lập kế hoạch coi tất cả các cú pháp kèo bóng đá hom nay rõ ràng là ràng buộc thứ tự kèo bóng đá hom nay, mặc dù không cần thiết về mặt logic để thực hiện một ràng buộc cho các kèo bóng đá hom nay bên trong. Do đó, mặc dù tất cả những điều này Truy vấn cho cùng một kết quả:
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);Thứ hai và thứ ba mất ít thời gian hơn để lập kế kèo bóng đá hom nay so với lần thứ nhất. Hiệu ứng này không đáng lo ngại chỉ cho ba bảng, nhưng Nó có thể là một cứu cánh với nhiều bảng.
14839_15001
Chọn * từ một chéo kèo bóng đá hom nay B, C, D, E trong đó ...;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 chúng để kèo bóng đá hom nay Các bảng khác, 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ể bị giảm bởi một yếu tố của 5.
Nếu bạn có sự kết hợp giữa các kết hợp bên ngoài và bên trong trong một truy vấn phức tạp, Bạn có thể không muốn hạn chế tìm kiếm của kế hoạch cho một điều tốt Đặt hàng bên trong kèo bóng đá hom nay bên trong một kèo bóng đá hom nay bên ngoài. Bạn không thể làm điều đó trực tiếp trong cú pháp kèo bóng đá hom nay, nhưng bạn có thể đi xung quanh cú pháp giới hạn bằng cách sử dụng phụ. Ví dụ,
Chọn * Từ D kèo bóng đá hom nay bên trái (Chọn * từ a, b, c trong đó ...) dưới dạng ss TRÊN (...);Ở đây, kèo bóng đá hom nay d phải là bước cuối cùng trong kế hoạch truy vấn, nhưng Người lập kế hoạch được tự do xem xét các đơn đặt hàng kèo bóng đá hom nay khác nhau cho a, b, c.
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 qua kèo bóng đá hom nay cú pháp --- giả sử rằng bạn biết một thứ tự tốt hơn, điều đó là. Thử nghiệm được khuyến nghị.