1-1 |123_1-1 |1681-1 |192_1-1 |2-1 |41-1 |2-1 |9_1-1 |361Phân tích
Sử dụng lấy mẫu ngẫu nhiên trong khi tạo ra số liệu thống kê, kết quả sẽ thay đổi một chút sau khi bất kỳ mớiPhân tích
.
1-1 |539_1-1 |578
Giải thích chọn * từ TENK1;
Cách người lập kế hoạch xác định tỷ lệ kèo bóng đá tối nay chất của1-1 |884_1-1 |891
1-1 |896_1-1 |913Phần 14.211-1 |24_11112pg_ class
:
11186_11323
Những con số này hiện tại là lần cuốiVACUUM
114-1 |9_11415Phân tích
Trên bàn. Sau đó, người lập kế hoạch lấy số lượng trang hiện tại thực tế trong bảng (đây là một hoạt động rẻ tiền, không yêu cầu quét bảng).relpages
sau đó11693_117-1 |4
117-1 |9_11817Relpages
11856_119-1 |9Reltuples
.
Hãy chuyển sang một ví dụ với điều kiện phạm vi trongWHERE
mệnh đề:
12-1 |95_1251-1 |
Người lập kế hoạch kiểm traWHERE
Điều kiện mệnh đề và tìm kiếm chức năng chọn lọc cho toán tử<
inpg_operator
. Cái này được giữ trong cộtOprrest
và mục nhập trong trường hợp này làScalarltsel
. The129-1 |3_12916
Hàm lấy biểu đồ chođộc đáo1
12999_13-1 |-1 |7pg_statistic
13-1 |49_131171314-1 |_1315-1 |
Xem:
13196_1343-1 |
1344-1 |_13489135-1 |7_1351-1 |<1000được thực hiện. Đây là tỷ lệ kèo bóng đá tối nay chọn lọc.Phầncủa nó vàtất cảtrong số những cái trước. Giá trị 1-1 |-1 |-1 | rõ ràng trong thùng thứ hai (993 Từ1997).
chọn lọc = (1 + (1-1 |-1 |-1 | - xô [2] .min)/(xô [2] .max - xô [2] .min))/num_buckets
142-1 |8_14416TENK1
:
tỷ lệ kèo bóng đá tối nay = rel_cardinality * chọn lọc
Tiếp theo hãy xem xét một ví dụ có điều kiện bình đẳng trongWHERE
mệnh đề:
Giải thích Chọn * từ Tenk1 trong đó StringU1 = 'craaaa';
Một lần nữa người lập kế hoạch kiểm tra15-1 |44_15-1 |51
Điều kiện mệnh đề và tìm kiếm chức năng chọn lọc cho=
, đó làeqsel
. Đối với ước tỷ lệ kèo bóng đá tối nay bình đẳng, biểu đồ không hữu ích;15289_153-1 |9(MCVS) được sử dụng để xác định tỷ lệ kèo bóng đá tối nay chọn lọc. Chúng ta hãy xem các MCV, với một số cột bổ sung sẽ hữu ích sau:
Chọn n_distince |, n_distince, most_common_vals, mest_common_freqs từ pg_stats
kể từ15912_1592-1 |
15925_16-1 |47MCFs):
Chọn lọc = MCF [3]
Như trước đây, số lượng hàng ước tỷ lệ kèo bóng đá tối nay chỉ là sản phẩm này với tỷ lệ kèo bóng đá tối nay chất củaTENK1
:
1634-1 |_16374
Bây giờ hãy xem xét cùng một truy vấn, nhưng với một hằng số không có trongMCVDanh sách:
Giải thích Chọn * từ Tenk1 trong đó StringU1 = 'XXX';
Đây là một vấn đề khá khác: Cách ước tỷ lệ kèo bóng đá tối nay độ chọn lọc khi giá trị làkhôngTrong16945_1695-1 |Danh sách. Cách tiếp cận là sử dụng thực tế là giá trị không có trong danh sách, kết hợp với kiến thức về tần số cho tất cả cácMCVS:
chọn lọc = (1 - sum (mcv_freqs))/(num_distince - num_mcv)
174-1 |2_17448MCVS và trừ chúng khỏi một, sau đó chia cho số lượng1757-1 |_17577Giá trị riêng biệt. Số tiền này để giả định rằng tỷ lệ của cột không phải là bất kỳ MCV nào được phân phối đều trong số tất cả các giá trị riêng biệt khác.
17988_18-1 |42
18-1 |52_18-1 |8-1 |181-1 |-1 |_18119
là một sự đơn giản hóa quá mức của những gìScalarltsel
Thực sự; Bây giờ chúng ta đã thấy một ví dụ về việc sử dụng MCV, chúng ta có thể điền vào một số chi tiết hơn.độc đáo1
là một cột duy nhất mà nó không có MCV (rõ ràng, không có giá trị nào phổ biến hơn bất kỳ giá trị nào khác). Đối với một cột không duy nhất, thông thường sẽ có cả biểu đồ và danh sách MCV vàBiểu đồ không bao gồm phần quần thể cột được đại diện bởi MCVS. Chúng tôi làm mọi thứ theo cách này bởi vì nó cho phép ước tỷ lệ kèo bóng đá tối nay chính xác hơn.Scalarltsel
Áp dụng trực tiếp điều kiện (ví dụ:<1000Hồi) cho mỗi giá trị của danh sách MCV và thêm tần số của MCV mà điều kiện là đúng. Điều này đưa ra một ước tỷ lệ kèo bóng đá tối nay chính xác về tỷ lệ kèo bóng đá tối nay chọn lọc trong phần của bảng là MCV.
Giải thích Chọn * từ Tenk1 trong đó StringU1 <'IAAAAA';
Chúng ta đã thấy thông tin MCV choStringU1
, Và đây là biểu đồ của nó:
19812_2-1 |114
2-1 |124_2-1 |176StringU1 <'IAAAAA'
2-1 |225_2-1 |348
2-1 |381_2-1 |5-1 |7
Tóm tắt tất cả các MCF cũng cho chúng ta biết rằng tổng số dân số được đại diện bởi MCV là -1 |,-1 |3-1 |33333, và do đó, phần được biểu thị bằng biểu đồ là -1 |.9696667 (một lần nữa, không có null nào, chúng ta sẽ không thể loại trừ chúng ở đây). Chúng ta có thể thấy rằng giá trịIAAAAA
rơi gần ở cuối nhóm biểu đồ thứ ba. Sử dụng một số giả định khá nhảm nhí về tần suất của các ký tự khác nhau, người lập kế hoạch đến ước tỷ lệ kèo bóng đá tối nay -1 |,298387 cho phần quần thể biểu đồ nhỏ hơn21-1 |93_211-1 |1
. Sau đó, chúng tôi kết hợp các ước tỷ lệ kèo bóng đá tối nay cho quần thể MCV và không phải MCV:
212-1 |9_21426
21436_219-1 |3
Bây giờ hãy xem xét một trường hợp có nhiều điều kiện trong21995_22-1 |-1 |2
22-1 |-1 |7_22-1 |17
22-1 |5-1 |_22519
Người lập kế hoạch giả định rằng hai điều kiện độc lập, để các tỷ lệ kèo bóng đá tối nay chọn riêng lẻ của các mệnh đề có thể được nhân với nhau:
227-1 |4_229-1 |8
Lưu ý rằng số lượng hàng được ước tỷ lệ kèo bóng đá tối nay sẽ được trả về từ quét chỉ số bitmap chỉ phản ánh điều kiện được sử dụng với chỉ mục; Điều này rất quan trọng vì nó ảnh hưởng đến ước tỷ lệ kèo bóng đá tối nay chi phí cho các đống tiếp theo.
Cuối cùng chúng tôi sẽ kiểm tra một truy vấn liên quan đến tham gia:
23233_239-1 |4
Hạn chế đối vớiTENK1
, 23994_24-1 |11
, được đánh giá trước khi nối vòng lồng nhau. Điều này được xử lý tương tự với ví dụ phạm vi trước đó.độc đáo1
Biểu đồ:
Chọn lọc = (0 + (50 - Xô [1] .Min)/(Xô [1] .Max - Xô [1] .Min))
Hạn chế cho sự tham gia làt2.Unique2 = t1.unique2
. Người vận hành chỉ là quen thuộc của chúng tôi=
Tuy nhiên, hàm chọn lọc được lấy từOprjoin
24737_2475-1 |pg_operator
và làeqjoinsel
. eqjoinsel
2488-1 |_24929TENK2
và24994_25-1 |-1 |1
:
25-1 |42_25365
Trong trường hợp này không cóMCVThông tin cho25481_2549-1 |
Bởi vì tất cả các giá trị dường như là duy nhất, vì vậy chúng tôi sử dụng một thuật toán chỉ dựa vào số lượng các giá trị riêng biệt cho cả hai mối quan hệ cùng với các phân số null của chúng:
257-1 |2_25868
Đây là, trừ phần null từ một cho mỗi mối quan hệ và chia cho tối đa số lượng các giá trị riêng biệt. Số lượng hàng mà sự tham gia có khả năng phát ra được tỷ lệ kèo bóng đá tối nay bằng tỷ lệ kèo bóng đá tối nay toán của sản phẩm Cartesian của hai đầu vào, nhân với độ chọn lọc:
tỷ lệ kèo bóng đá tối nay = (outer_cardinality * Internal_cardinality) * Sự chọn lọc
Đã có danh sách MCV cho hai cột,eqjoinsel
Đã sử dụng so sánh trực tiếp các danh sách MCV để xác định độ chọn lọc nối trong phần quần thể cột được đại diện bởi MCV. Ước tỷ lệ kèo bóng đá tối nay cho phần còn lại của quần thể theo cùng một cách tiếp cận được hiển thị ở đây.
Lưu ý rằng chúng tôi đã hiển thịInside_cardinality
AS 1-1 |-1 |-1 |-1 |, nghĩa là kích thước không biến đổi củaTENK2
. Nó có thể xuất hiện từ việc kiểm traGiải thích
26877_27-1 |4327-1 |66_27-1 |73
27-1 |78_27391
Đối với những người quan tâm đến chi tiết thêm, ước tỷ lệ kèo bóng đá tối nay kích thước của một bảng (trước bất kỳWHERE
mệnh đề) được thực hiện trong27564_276-1 |2
276-1 |7_2766-1 |src/phụ trợ/tối ưu hóa/path/clausesel.c
. Các chức năng chọn lọc dành riêng cho toán tử chủ yếu được tìm thấy trong27815_27849
.
2897-1 |_29196Mẫu nàyĐể báo cáo vấn đề tài liệu.