Đây có phải là một mô hình phổ biến mới trong Oracle Nơi tồn tại (Chọn NULL TỪ)?


8

Cách đây nhiều năm, người ta thường viết

where exists (Select * from some_table where some_condition)

Năm ngoái tôi nhận thấy rằng nhiều tập lệnh t-sql đã chuyển sang sử dụng số 1 thay vì ngôi sao

where exists (Select 1 from some_table where some_condition)

chỉ trên SO tôi đã thấy ví dụ này của Oracle

WHERE EXISTS (SELECT NULL FROM ...

Đây có phải là một mô hình phổ biến với Oracle? Và đó là những đối số hiệu suất để sử dụng một cái gì đó như thế này.


2
SO có một cuộc thảo luận về điều này. stackoverflow.com/questions/424212/ Mạnh
Leigh Riffel

Câu trả lời:


6

Câu trả lời ngắn gọn: Tôi hy vọng không!

Ngay cả SELECT 1thành ngữ cũng có thể tồn tại lâu hơn tính hữu dụng của nó, vì các công cụ cơ sở dữ liệu đã đủ tiến bộ để nhận ra rằng bạn không thực sự muốn các hàng, bạn chỉ muốn biết nếu các hàng tồn tại. Tôi đã xem xét các kế hoạch thực hiện trong SQL 2005 và thường thấy chúng được viết lại dưới dạng tham gia, ngay cả khi SELECT *được sử dụng.


5

Trong Oracle, vấn đề không phải là hiệu quả. Bạn thậm chí có thể đặt 1/0 ở đó và câu lệnh sẽ không trả về sai số bằng 0 vì biểu thức không được ước tính.


1
Điều này có cần phải được đóng lại để dựa vào câu hỏi SO không? Đây có phải là một trong những "di chuyển SO sang dba.SE" không?
jcolebrand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.