Sự khác biệt giữa Sql tồn tại Và Trong Sự khác biệt giữa

Anonim

Sql Hiện tại vs Trong

Vấn đề giải quyết trong TSQL có sẵn thông qua các phương pháp khác nhau và kết quả mong muốn có thể được nhìn thấy bằng cách sử dụng bất kỳ của họ. Một trong những cách kết quả cuối cùng có thể đạt được là thông qua việc sử dụng mệnh đề IN và EXISTS. Việc sử dụng các mệnh đề giúp lọc các tập kết quả với tham chiếu đến một truy vấn phụ có sẵn. Việc thực hiện IN và EXISTS hơi khác và đó là những khác biệt được đánh giá.

Có nhiều yếu tố quyết định có hay không IN hay EXISTS sẽ được đưa ra. Một trong số đó là số liệu có sẵn trong bảng. Một số lượng lớn các kết quả dữ liệu trong máy chủ SQL trở lại sử dụng của một chỉ số quét hơn là sử dụng một Tìm kiếm Chỉ mục.

Sự khác nhau

Số liệu thống kê đưa ra cũng cho biết rất nhiều về kế hoạch thực hiện mà phải tuân theo. Sự khác biệt được hiển thị khi máy chủ đã tích lũy đủ số liệu thống kê để đưa ra quyết định hợp lệ và khi không có số liệu thống kê lần đầu tiên. Phần cứng được sử dụng cũng xác định liệu IN hay EXISTS sẽ được sử dụng. Điều này phần lớn phụ thuộc vào số lượng CPU có sẵn.

DẠNG tồn tại được chạy khi cần kết hợp các kết quả của một truy vấn với truy vấn phụ khác. IN mặt khác được sử dụng khi lấy ra các giá trị của các cột cụ thể nằm trong một danh sách. Quyết định sử dụng chỉ dựa trên sự phù hợp, i. e. khi bạn cảm thấy rằng việc sử dụng nó là thích hợp.

Trong trường hợp một truy vấn phụ được sử dụng và một giá trị null được trả về, toàn bộ câu lệnh sẽ trở thành NULL. Điều này có hiệu lực chỉ đến việc sử dụng từ khóa HIỆN TẠI. Việc sử dụng từ khoá IN xuất hiện khi một so sánh các giá trị khác nhau trong các truy vấn phụ được yêu cầu. Từ khóa EXISTS chủ yếu được sử dụng để đánh giá các tuyên bố đúng hoặc sai và IN được sử dụng trong hầu hết các câu truy vấn phụ.

Nhìn chung, EXISTS sẽ nhanh hơn IN, lý do là khi EXISTS được chạy, tìm kiếm đã tìm thấy một hit và sẽ được xem xét liệu điều kiện đã được chứng minh là đúng sự thật. Khi chạy IN, nó thu thập tất cả các kết quả từ các truy vấn phụ và trình bày chúng để chế biến tiếp, và quá trình này mất một lúc.

Điều quan trọng cần lưu ý là phrasing của truy vấn phải được thực hiện đúng và được kiểm tra trước khi chạy. Không đảm bảo rằng các truy vấn là kết quả chính xác để EXISTS và IN trình bày các giá trị khác nhau, và đây không phải là mục đích sử dụng của họ trong máy chủ SQL. Trình tối ưu hoá luôn luôn phải là tối ưu khi hoạt động như bình thường.

Tóm tắt

Giải quyết vấn đề trong TSQL thường được thực hiện với EXISTS và IN.

Sự khác biệt nhỏ được quan sát khi lăn ra EXISTS và IN, mặc dù tối ưu hóa cho mỗi nên cho cùng một giá trị.

Thống kê là một trong những yếu tố quyết định cho dù EXISTS hoặc IN sẽ được đưa ra

Phần cứng được sử dụng cũng rất quan trọng trong việc xác định xem EXISTS hoặc IN có được triển khai

Việc chạy EXISTS sẽ hữu ích khi có cần phải tương quan các kết quả của truy vấn đã cho với truy vấn phụ khác.NH EXNG NGUYÊN NHÂN cũng rất phổ biến khi các báo cáo đúng hay sai đòi hỏi phải được đánh giá.

IN thường được sử dụng khi có nhu cầu truy lục các cột cụ thể trong một danh sách. Đồng thời, nó thường được sử dụng khi so sánh giá trị trong các truy vấn phụ.

TỐC ĐỐc thường nhanh hơn IN khi nó chạy, tìm kiếm một lần truy cập và đánh giá liệu điều kiện có chứng minh đúng là

IN chậm hơn khi nó thu thập tất cả các kết quả từ truy vấn con và xử lý nó.

Mặc dù có nhiều lần thực hiện khác nhau, nhưng tối ưu hóa sẽ cho kết quả tương tự trong EXISTS và IN.