Tương quan đa biến có thể được thể hiện bằng một tập dữ kèo bóng đá c1 rất đơn giản - một bảng có hai cột, cả hai đều chứa cùng một giá trị:
Tạo bảng T (A int, B int); Chèn vào T Chọn i % 100, i % 100 từ Generate_Series (1, 10000) S (i); Phân tích T;
như được giải thích trongPhần 14.2, Người lập kế hoạch có thể xác định tính chất củaT
Sử dụng số lượng trang và hàng thu được từpg_ class
:
9689_9822
Phân phối dữ kèo bóng đá c1 rất đơn giản; Chỉ có 100 giá trị riêng biệt trong mỗi cột, được phân phối đồng đều.
Ví dụ sau đây cho thấy kết quả của việc ước tính AWHERE
điều kiện trênA
Cột:
Giải thích (phân tích, tắt thời gian) chọn * từ t trong đó a = 1; Kế hoạch truy vấn ---------------------------------------------------------------------------------------- SEQ Scan trên t (chi phí = 0,00..170.00 hàng = 100 chiều rộng = 8) (hàng thực = 100 vòng = 1) Bộ lọc: (a = 1) Hàng bị xóa bởi bộ lọc: 9900
10506_10757WHERE
Điều kiện sử dụngB
Cột, một kế hoạch giống hệt nhau được tạo. Nhưng quan sát những gì xảy ra nếu chúng ta áp dụng cùng một điều kiện trên cả hai cột, kết hợp chúng vớivà
:
Giải thích (phân tích, tắt thời gian) chọn * từ t trong đó a = 1 và b = 1; Kế hoạch truy vấn ----------------------------------------------------------------------- -------------- SEQ SCAN trên t (chi phí = 0,00..195,00 hàng = 1 chiều rộng = 8) (hàng thực = 100 vòng = 1) Bộ lọc: ((a = 1) và (b = 1)) Hàng bị xóa bởi bộ lọc: 9900
11432_11828
11838_11911Phân tích
Để tính toán số liệu kèo bóng đá c1 phụ thuộc chức năng trên hai cột:
12061_12503
Một vấn đề tương tự xảy ra với ước tính tính toán của các bộ của nhiều cột, chẳng hạn như số lượng nhóm sẽ được tạo bởi ANhóm bởi
mệnh đề. KhiNhóm bởi
12986_13139
Giải thích (phân tích, tắt thời gian) Chọn đếm (*) từ nhóm T bằng a; Kế hoạch truy vấn ----------------------------------------------------------------------- ---------------------------------- Hashaggregate (chi phí = 195.00..196.00 hàng = 100 chiều rộng = 12) (hàng thực = 100 vòng = 1) Khóa nhóm: a - SEQ SCAN trên t (chi phí = 0,00..145,00 hàng = 10000 chiều rộng = 4) (hàng thực = 10000 vòng = 1)
Nhưng không có số liệu kèo bóng đá c1, ước tính số lượng nhóm trong truy vấn có hai cột trongNhóm bởi
, như trong ví dụ sau, bị tắt theo thứ tự độ lớn:
13868_14317
Bằng cách xác định lại đối tượng kèo bóng đá c1 kê để bao gồm số lượng phân loại n cho hai cột, ước tính được cải thiện nhiều:
kèo bóng đá c1 kê STTS; Tạo Stts kèo bóng đá c1 kê (phụ thuộc, ndistince) trên a, b từ t; Phân tích t; Giải thích (Phân tích, Tắt thời gian) Chọn Đếm (*) từ nhóm T bằng a, b; Kế hoạch truy vấn ----------------------------------------------------------------------- ----------------------------- Hashaggregate (chi phí = 220.00..221.00 hàng = 100 chiều rộng = 16) (hàng thực = 100 vòng = 1) Khóa nhóm: A, B - SEQ SCAN trên t (chi phí = 0,00..145,00 hàng = 10000 chiều rộng = 8) (hàng thực = 10000 vòng = 1)
Như đã giải thích trongPhần 71.2.1, Phụ thuộc chức năng là loại kèo bóng đá c1 kê rất rẻ và hiệu quả, nhưng giới hạn chính của chúng là bản chất toàn cầu của chúng (chỉ theo dõi các phụ thuộc ở cấp độ cột, không phải giữa các giá trị cột riêng lẻ).
Phần này giới thiệu biến thể đa biến củaMCV(giá trị phổ biến nhất) danh sách, một phần mở rộng đơn giản của các số liệu kèo bóng đá c1 kê trên cột được mô tả trongPhần 71.1. Những kèo bóng đá c1 kê này giải quyết giới hạn bằng cách lưu trữ các giá trị riêng lẻ, nhưng nó tự nhiên đắt hơn, cả về mặt xây dựng số liệu kèo bóng đá c1 kê trongPhân tích
16116_16146
Hãy xem truy vấn từPhần 71.2.1Một lần nữa, nhưng lần này với AMCVDanh sách được tạo trên cùng một tập hợp các cột (đảm bảo bỏ các phụ thuộc chức năng, để đảm bảo người lập kế hoạch sử dụng các kèo bóng đá c1 kê mới được tạo).
kèo bóng đá c1 kê STTS; Tạo số liệu kèo bóng đá c1 kê STTS2 (MCV) trên A, B từ T; Phân tích t; Giải thích (phân tích, tắt thời gian) chọn * từ t trong đó a = 1 và b = 1; Kế hoạch truy vấn ---------------------------------------------------------------------------------------- SEQ SCAN trên t (chi phí = 0,00..195,00 hàng = 100 chiều rộng = 8) (hàng thực = 100 vòng = 1) Bộ lọc: ((a = 1) và (b = 1)) Hàng bị xóa bởi bộ lọc: 9900
Ước tính chính xác như với các phụ thuộc chức năng, chủ yếu là nhờ bảng khá nhỏ và có phân phối đơn giản với số lượng giá trị riêng biệt thấp. Trước khi xem truy vấn thứ hai, không được xử lý bởi các phụ thuộc chức năng đặc biệt tốt, hãy kiểm traMCVLiệt kê một chút.
Kiểm traMCVDanh sách có thể sử dụngPG_MCV_LIST_ITEMS
Hàm hoàn trả lại.
Chọn m. pg_mcv_list_items (stxdmcv) m trong đó stxname = 'stts2'; Chỉ mục | Giá trị | NULLS | tần số | base_frequency -------+----------+-------+-----------+-------------------- 0 | 0, 0 | f, f | 0,01 | 0,0001 1 | 1, 1 | f, f | 0,01 | 0,0001 ... 49 | 49, 49 | f, f | 0,01 | 0,0001 50 | 50, 50 | f, f | 0,01 | 0,0001 ... 97 | 97, 97 | f, f | 0,01 | 0,0001 98 | 98, 98 | f, f | 0,01 | 0,0001 99 | 99, 99 | f, f | 0,01 | 0,0001 (100 hàng)
Điều này xác nhận có 100 kết hợp riêng biệt trong hai cột và tất cả chúng đều có khả năng như nhau (tần số 1% cho mỗi cột). Tần số cơ sở là tần số được tính toán từ các kèo bóng đá c1 kê trên mỗi cột, như thể không có số liệu kèo bóng đá c1 kê nhiều cột. Nếu có bất kỳ giá trị null nào trong một trong các cột, điều này sẽ được xác định trongNULLS
Cột.
Khi ước tính tính chọn lọc, người lập kế hoạch áp dụng tất cả các điều kiện trên các mục trongMCVDanh sách, sau đó tổng hợp các tần số của các kết hợp. Nhìn thấymcv_clauselist_selectivity
inSRC/phụ trợ/kèo bóng đá c1 kê/mcv.c
Để biết chi tiết.
So với phụ thuộc chức năng,MCVDanh sách có hai lợi thế chính. Đầu tiên, danh sách lưu trữ các giá trị thực tế, cho phép quyết định kết hợp nào tương thích.
Giải thích (phân tích, tắt thời gian) chọn * từ t trong đó a = 1 và b = 10; Kế hoạch truy vấn ----------------------------------------------------------------------- -------- Quét SEQ trên t (chi phí = 0,00..195.00 hàng = 1 chiều rộng = 8) (hàng thực = 0 vòng = 1) Bộ lọc: ((a = 1) và (b = 10)) Hàng bị xóa bởi bộ lọc: 10000
Thứ hai,MCVDanh sách xử lý một phạm vi rộng hơn của các loại mệnh đề, không chỉ các mệnh đề bình đẳng như phụ thuộc chức năng. Ví dụ: hãy xem xét truy vấn phạm vi sau cho cùng một bảng:
Giải thích (phân tích, tắt thời gian) chọn * từ t trong đó a <= 49 và b 49; Kế hoạch truy vấn ----------------------------------------------------------------------- -------- Quét SEQ trên t (chi phí = 0,00..195.00 hàng = 1 chiều rộng = 8) (hàng thực = 0 vòng = 1) Bộ lọc: ((a <= 49) và (b 49)) Hàng bị xóa bởi bộ lọc: 10000
Nếu bạn thấy bất cứ điều gì trong tài kèo bóng đá c1 không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài kèo bóng đá c1.