Postgresql 9.3.25 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 14. | NEXT |
PostgreSQLnghĩ ra AKế hoạch truy vấnĐối với mỗi truy vấn mà nó nhận được. Chọnkế hoạchĐiều đó cố gắngGiải kèo bóng đá hom naylệnh để xem truy vấn nào kế hoạch
Ví dụ trong phần này được rút ra từ bài kiểm tra hồi quyPhân tích chân không,,Phân tíchThống kê là các mẫu ngẫu nhiên chứ không phải
Các ví dụ sử kèo bóng đá hom nayGiải kèo bóng đá hom nay'mặc định"Text"Định dạng đầu ra, nhỏ gọnGiải kèo bóng đá hom nayS đầu ra cho kèo bóng đá hom nay chương trình để phân tích thêm,
Cấu trúc của kế hoạch truy vấn là kèo bóng đá hom nay câyKế hoạch các nút. Các nút ở cấp dưới của câygiá trịCác mệnh đề và các chức năng hoàn trả lại trongtừ, có các loại nút quét riêng của chúng. NếuGiải kèo bóng đá hom nayCó kèo bóng đá hom nay dòng cho mỗi nút trong cây kế hoạch,
Đây là kèo bóng đá hom nay ví dụ tầm thường, chỉ để hiển thị những gì đầu ra trông
Giải kèo bóng đá hom nay Chọn * từ Tenk1;
Vì truy vấn này không cóWHEREmệnh đề,
Chi phí khởi động ước tính. Đây là thời gian dành trước
Tổng chi phí ước tính. Điều này được nêu dựa trên giả định rằnggiới hạnVí dụ bên dưới).
Số lượng hàng ước tính đầu ra theo nút kế hoạch này. kèo bóng đá hom nay lần nữa,
Ước tính chiều rộng trung bình của đầu ra hàng theo nút kế hoạch này (trong
Chi phí được đo bằng các đơn vị tùy ý được xác định bởiPhần). Thực tiễn truyền thống là để đo lường chi phí theo đơn vịSEQ_PAGE_COSTIS1.0và cái khác
Điều quan trọng là phải hiểu rằng chi phí của cấp trên
ThehàngGiá trị là kèo bóng đá hom nay chút khó khănWHERE-Choong điều kiện đang được
Trở về ví dụ của chúng tôi:
Giải kèo bóng đá hom nay chọn * từ TENK1;
Những con số này có nguồn gốc rất đơn giản. Nếu bạn làm:
15130_15198
Bạn sẽ tìm thấy điều đóTENK1
có 358SEQ_PAGE_COST) +cpu_tuple_cost).SEQ_PAGE_COSTlà 1.0 vàcpu_tuple_costlà 0,01, vì vậy ước tính
Bây giờ hãy sửa đổi truy vấn để thêmWHEREđiều kiện:
Giải kèo bóng đá hom nay Chọn * từ Tenk1 trong đó độc đáo1 <7000;
Lưu ý rằngGiải kèo bóng đá hom nayđầu ra hiển thịWHEREmệnh đề được áp kèo bóng đá hom nay dưới dạng"Bộ lọc"Điều kiện được gắn vào SEQWHEREmệnh đề. Tuy nhiên, việc quét sẽCPU_OPERATOR_COST,,WHEREđiều kiện.
Số lượng hàng thực tế mà truy vấn này sẽ chọn là 7000, nhưnghàngƯớc tính chỉ gần đúng. Nếu nhưPhân tíchlệnh, vì số liệu thống kêPhân tíchđược lấy từ A
Bây giờ, hãy làm cho điều kiện hạn chế hơn:
Giải kèo bóng đá hom nay Chọn * từ Tenk1 trong đó độc đáo1 <100;
Ở đây người lập kế hoạch đã quyết định sử kèo bóng đá hom nay kế hoạch hai bước: đứa trẻ"Bitmap"được đề cập trong tên nút là cơ chế thực hiện
Bây giờ hãy thêm kèo bóng đá hom nay điều kiện khác vàoở đâumệnh đề:
Giải kèo bóng đá hom nay Chọn * từ TENK1 trong đó độc đáo1 <100 và StringU1 = 'xxx';
Điều kiện được thêm vàoStringU1 = 'xxx'Giảm ước tính số lượng hàng đầu ra, nhưng không phải là chi phí vì chúng tôiStringU1Điều khoản không thể được áp kèo bóng đá hom nay làmđộc đáo1Cột. Thay vào đó nó được áp kèo bóng đá hom nay như một bộ lọc trên
Trong một số trường hợp, người lập kế hoạch sẽ kèo bóng đá hom nay"đơn giản"Kế hoạch quét chỉ mục:
Giải kèo bóng đá hom nay Chọn * từ Tenk1 trong đó độc đáo1 = 42;
Trong loại kế hoạch này, các hàng bảng được tìm nạp theo thứ tự chỉ mục,Đặt hàng bởiĐiều kiện phù hợp với chỉ mụcĐặt hàng bởi.
Nếu có các chỉ mục riêng biệt trên kèo bóng đá hom nay số cộtWHERE, người lập kế hoạch có thể
Giải kèo bóng đá hom nay Chọn * từ TENK1 trong đó độc đáo1 <100 và duy nhất2 9000;
Nhưng điều này yêu cầu truy cập cả hai chỉ mục, vì vậy nó không nhất thiết
Đây là kèo bóng đá hom nay ví dụ hiển thị các hiệu ứng củagiới hạn:
Giải kèo bóng đá hom nay Chọn * từ TENK1 trong đó độc đáo1 <100 và độc đáo2 9000 giới hạn 2;
Đây là cùng kèo bóng đá hom nay truy vấn như trên, nhưng chúng tôi đã thêm kèo bóng đá hom naygiới hạnđể không phải tất cả các hàng cần được truy xuất,
Hãy thử tham gia hai bảng, sử kèo bóng đá hom nay các cột chúng tôi đã
Giải kèo bóng đá hom nay Chọn *
Trong kế hoạch này, chúng tôi có nút nối vòng lồng nhau với hai bảng"Outer", con là quét bitmap tương tựChọn ... trong đó độc đáo1 <10Bởi vì chúng tôi đang áp kèo bóng đá hom nayWHEREmệnh đềđộc đáo1 <10Tại nút đó. Thet1.Unique2 = t2.unique2mệnh đề thì không"bên trong"trẻ kèo bóng đá hom nay lần cho mỗi hàng thu được từt1.Unique2Giá trị từ hàng bên ngoài có sẵn, vì vậyChọn ... trong đó t2.unique2 =hằng sốtrường hợp. (Chi phí ước tính làT2.) Chi phí của nút vòng lặp sau đó
Trong ví dụ này, số lượng hàng đầu ra của tham gia giống nhưWHEREĐiều khoản đề cập đến cả hai bảng và do đó có thể
Giải kèo bóng đá hom nay Chọn *
Điều kiệnt1.hundred <Không thể kiểm tra trongtenk2_unique2INDEX, vì vậy nó được áp kèo bóng đá hom nay tại tham gia
Lưu ý rằng ở đây người lập kế hoạch đã chọn để"Vật chất hóa"Mối quan hệ bên trong của sự tham gia, bởiT2IndexScan sẽ được thực hiện chỉ kèo bóng đá hom nay lần, thậm chí
Khi giao dịch với các kết nối bên ngoài, bạn có thể thấy các nút kế hoạch tham gia"Tham gia bộ lọc"và Plain"Filter"Điều kiện đính kèm. Tham giatrênmệnh đề, vì vậy kèo bóng đá hom nay hàng không thành công bộ lọc tham gia
Nếu chúng ta thay đổi tính chọn lọc của truy vấn kèo bóng đá hom nay chút, chúng ta có thể nhận được rất nhiều
Giải kèo bóng đá hom nay Chọn *
Ở đây, người lập kế hoạch đã chọn sử kèo bóng đá hom nay một băm tham gia, trong đó các hàngtenk1là
kèo bóng đá hom nay loại tham gia khác có thể là kèo bóng đá hom nay sự hợp nhất tham gia, được minh họa
Giải kèo bóng đá hom nay Chọn *
Hợp nhất tham gia yêu cầu dữ liệu đầu vào của nó được sắp xếp trên tham giaTENK1Dữ liệu làOnek, Bởi vì có nhiều hàng khác được truy cập
kèo bóng đá hom nay cách để xem xét các kế hoạch biến thể là buộc người lập kế hoạch phảiPhần. (Đây là kèo bóng đá hom nay công cụ thô, nhưng hữu ích. Xem thêmPhần 14.3.) Ví dụ, nếu chúng taOnekTrong ví dụ trước,
Đặt enable_sort = off;
trong đó cho thấy người lập kế hoạch nghĩ rằng sắp xếpOnekbằng cách quét chỉ số đắt hơn khoảng 12%Giải kèo bóng đá hom nay Phân tích, Như đã thảo luận dưới đây.
Có thể kiểm tra độ chính xác của ước tính của người lập kế hoạchGiải kèo bóng đá hom nay'SPhân tíchTùy chọn. Với tùy chọn này,Giải kèo bóng đá hom nayThực tế thực hiện truy vấn, và sau đóGiải kèo bóng đá hom nayHiển thị. Ví dụ: chúng ta có thể nhận được kèo bóng đá hom nay
Giải kèo bóng đá hom nay Phân tích Chọn *
Lưu ý rằng"Thời gian thực tế"Giá trịchi phíƯớc tính được thể hiện bằng các đơn vị tùy ý; Vì thế
Trong kèo bóng đá hom nay số kế hoạch truy vấn, có thể cho kèo bóng đá hom nay nút convòng lặpBáo cáo giá trị Tổng sốvòng lặpgiá trị để lấytenk2.
Trong kèo bóng đá hom nay số trường hợpGiải kèo bóng đá hom nay Phân tíchHiển thị
Giải kèo bóng đá hom nay Phân tích Chọn *
Nút sắp xếp hiển thị phương thức sắp xếp được sử kèo bóng đá hom nay (đặc biệt, cho dù
kèo bóng đá hom nay loại thông tin bổ sung khác là số lượng hàng bị xóa
Giải kèo bóng đá hom nay Phân tích Chọn * từ Tenk1 trong đó mười <7;
Những số đếm này có thể đặc biệt có giá trị đối với các điều kiện lọc"Hàngdòng chỉ xuất hiện khi ít nhất kèo bóng đá hom nay hàng được quét hoặc
kèo bóng đá hom nay trường hợp tương tự như điều kiện bộ lọc xảy ra với"Mất"Quét chỉ mục. Ví dụ, hãy xem xét điều này
Giải kèo bóng đá hom nay Phân tích Chọn * từ polygon_tbl trong đó f1 @ polygon '(0,5,2,0)';
Người lập kế hoạch nghĩ (khá chính xác) rằng bảng mẫu này là
đặt enable_seqscan TẮT;
Ở đây chúng ta có thể thấy rằng chỉ mục đã trả lại kèo bóng đá hom nay hàng ứng cử viên, mà"Mất"cho
Giải kèo bóng đá hom naycóbộ đệmTùy chọn có thể được sử kèo bóng đá hom nay vớiPhân tíchĐể có thêm số liệu thống kê thời gian chạy hơn:
Giải kèo bóng đá hom nay (phân tích, bộ đệm) Chọn * từ TENK1 trong đó độc đáo1 <100 và duy nhất2 9000;
Các số được cung cấp bởibộ đệmTrợ giúp
Hãy nhớ rằng vìGiải kèo bóng đá hom nayThực tế chạy truy vấn, mọi tác kèo bóng đá hom nay phụ sẽ xảy raGiải kèo bóng đá hom nayDữ liệu. Nếu bạn muốn phân tích kèo bóng đá hom nay truy vấn biến đổi dữ liệu mà không cần
Bắt đầu;
Như đã thấy trong ví dụ này, khi truy vấn làChèn, Cập nhậthoặcXóalệnh, công việc thực tế của
TheTổng thời gian chạyHiển thị bởiGiải kèo bóng đá hom nay Phân tíchBao gồm khởi động và khởi nghiệp thực thitrướcTriggers, nếu có, được bao gồm trong thời gian để chèn liên quan,sauTriggers không được tính ở đó vìsauTrình kích hoạt được bắn sau khi hoàn thànhtrướchoặcsau)Giải kèo bóng đá hom nay Phân tích.
Có hai cách quan trọng trong đó thời gian chạy được đo bằngGiải kèo bóng đá hom nay Phân tíchCó thể đi chệch khỏi bình thườngGiải kèo bóng đá hom nay Phân tíchcó thểgetTimeOfday ()
Cuộc gọi hệ điều hành. Bạn có thểkèo bóng đá homcông cụ để đo lường
Giải kèo bóng đá hom nayKết quả không nênpolygon_tblVí dụ ở trên.)
Có những trường hợp các giá trị thực tế và ước tính sẽ khônggiới hạnhoặc hiệu ứng tương tự. Ví dụ, tronggiới hạnTruy vấn chúng tôi đã sử kèo bóng đá hom nay trước đó,
Giải kèo bóng đá hom nay Phân tích Chọn * từ TENK1 trong đó độc đáo1 <100 và độc đáo2 9000 giới hạn 2;
Chi phí ước tính và số lượng hàng cho nút quét chỉ mục là
Hợp nhất cũng có các tạo tác đo lường có thể gây nhầm lẫngiới hạn. Ngoài ra, nếuGiải kèo bóng đá hom nayĐếm các lượng khí thải lặp đi lặp lại này
Các nút bitmapand và bitmapor luôn báo cáo hàng thực tế của họ