Tôi bắt đầu học SQL. Và tôi thấy rằng chúng ta thường có thể đạt được kết quả tương tự với sự trợ giúp của JOIN hoặc các câu lệnh chọn bên trong.
Câu hỏi 1 (rộng)Ở đâu :JOIN nhanh hơn lựa chọn nội bộ hoặc ngược lại?
Câu hỏi 2 (hẹp):Bạn có thể giải thích nguyên nhân gây ra sự khác biệt về hiệu suất cho ba truy vấn sau không?
tái bút 有trang web rất đẹpNó tính toán hiệu suất truy vấn nhưng tôi không thể hiểu được kết quả ước tính của nó.
Truy vấn 1:
CHỌN nhà sản xuất DISTINCT
TỪ Sản phẩm pro INNER JOIN Máy in pri
trên pro.model = pri.model
Truy vấn 2:
CHỌN nhà sản xuất DISTINCT
TỪ sản phẩm
Ở ĐÂU mô hình TRONG (
CHỌN model TỪ Máy in
)
Truy vấn 3:
CHỌN nhà sản xuất riêng biệt
TỪ Sản phẩm chuyên nghiệp, Máy in pri
Ở ĐÂU pro.model = pri.model
Khi máy chủ đánh giá THAM GIA, nó khớp với tính tương đương của phép nối, chỉ quét các cột cần thiết cho các giá trị trong các bảng khác và lọc ra mọi thứ khác, việc này thường được thực hiện bằng một thao tác cụ thể.
Khi bạn có truy vấn phụ, máy chủ cần đánh giá kế hoạch của truy vấn phụ trước khi so khớp tương đương THAM GIA, vì vậy, nếu truy vấn phụ không bù đắp được nỗ lực bổ sung trong việc lọc ra nhiều tiếng ồn, bạn sẽ có hiệu suất tốt hơn khi không có truy vấn phụ.
Máy chủ rất thông minh và họ sẽ cố gắng loại bỏ bất cứ thứ gì họ không cần khi đánh giá kết nối. Sau đó, họ cố gắng đạt được hiệu suất tốt nhất bằng cách sử dụng mọi chỉ số có thể, trong đó hiệu suất tốt nhất có nghĩa là điều tốt nhất họ có thể tìm thấy trong một khoảng thời gian giới hạn để bản thân thời gian lên lịch không phá hủy hiệu suất.
Đã thêm sau bình luận của OP
Ước tính O(n) phụ thuộc vào độ phức tạp của truy vấn và truy vấn phụ, nếu quan tâm đến việc xây dựng kế hoạch truy vấn, bạn sẽ phải duyệt phần trợ giúp của cơ sở dữ liệu đã chọn và có thể không tìm thấy nhiều nếu cơ sở dữ liệu không phải là nguồn mở.
Theo thuật ngữ của giáo dân:
- a Các phép nối đơn giản được đánh giá ở một cấp độ, kế hoạch truy vấn chính
- Truy vấn con được đánh giá ở hai cấp độ: kế hoạch truy vấn phụ và kế hoạch truy vấn chính.
Một số IDE DB có thể hiển thị bản trình bày trực quan về kế hoạch tổng thể, điều này thường hữu ích trong việc hiểu một số điểm chính (tôi không biết liệu mySQL có hay không)
Tôi là một lập trình viên xuất sắc, rất giỏi!