2012-09-13 22 views
5

Tôi đã viết một truy vấn oracle sql phức tạp và giải thích số liệu thống kê kế hoạch giống như thế này: Chi phí: 209.201 Bytes: 187.944.150 Cardinality: 409.675Oracle giải thích kế hoạch: cardinality trả về một con số khổng lồ nhưng truy vấn trả về không có hồ sơ

Bây giờ DBA đã điều chỉnh truy vấn và số liệu thống kê trông giống như sau: Chi phí: 42,996 byte: 89,874,138 Cardinality: 209,226

Câu hỏi đầu tiên của tôi là, nếu các con số thấp hơn, nó có tự động có nghĩa là hiệu suất tốt hơn không? Số nào là số tiền thích hợp nhất? Chi phí/Cardinality/Bytes? Câu hỏi thứ hai của tôi là: Tôi hiểu số lượng thẻ là số hàng được đọc. Nhưng khi tôi chạy truy vấn, nó trả về hàng '0'! Ấn tượng của tôi là rằng Cardinality phải giống nhau cho hai truy vấn được cho là trả về cùng một tập hợp kết quả. Điều này tôi đoán là sai?

+0

Cardinality là (chỉ cần đặt) số hàng tối ưu _thinks_ sẽ là cần thiết; tùy thuộc vào nhiều yếu tố, bao gồm cả mức độ thống kê, điều đó có thể sai. – Ben

+0

Cảm ơn. Bạn có thể giải thích BYTES là gì không? – Victor

+1

@Kaushik: Từ tài liệu, 'BYTES' là" Ước tính theo phương pháp tối ưu hóa truy vấn của số byte được truy cập bởi thao tác ". Nhưng điều đó gây hiểu lầm, nó thực sự là số byte * trả về * bởi hoạt động. Ví dụ: nếu bạn quét toàn bộ bảng, nó sẽ đọc từng byte trong bảng, nhưng 'BYTES' là ước tính kích thước * sau * bất kỳ bộ lọc nào. http://docs.oracle.com/cd/E11882_01/server.112/e16638/ex_plan.htm#r22c1-t12 –

Trả lời

3

Chi phí, byte, cardinality ... tất cả đều là ước tính theo các yếu tố đầu vào như thống kê được đưa ra cho trình tối ưu hóa. Vì vậy, họ tự động có nghĩa là không có gì nhưng có thể đưa ra một ý tưởng. Trong các từ của Oracle Performance Tuning Guide: "Tốt nhất nên sử dụng EXPLAIN PLAN để xác định kế hoạch truy cập, và sau đó chứng minh rằng đó là kế hoạch tối ưu thông qua thử nghiệm. Khi đánh giá kế hoạch, kiểm tra mức tiêu thụ tài nguyên thực tế của tuyên bố."

Đối với câu hỏi thứ hai: Các truy vấn tương đương về mặt lý thuyết nên trả về cùng một thẻ. Bảng thống kê của bạn có thể cũ.

Các vấn đề liên quan