Tôi đang sử dụng Oracle và tôi có một bảng rất lớn. Tôi cần phải kiểm tra sự tồn tại của bất kỳ hàng nào đáp ứng một số tiêu chí đơn giản. Cách tốt nhất để thực hiện điều này bằng cách sử dụng SQL đơn giản là gì?Truy vấn nhanh nhất để kiểm tra sự tồn tại của một hàng trong Oracle?
Dưới đây là dự đoán tốt nhất của tôi, và trong khi nó có thể bật ra được đủ nhanh cho các mục đích của tôi, tôi rất muốn học một cách kinh điển về cơ bản làm SQL Server của "tồn tại" trong Oracle:
select count(x_id) from x where x.col_a = value_a and x.col_b = value_b;
Số đếm() sau đó sẽ được trả về dưới dạng boolean trong một cấp khác. Điểm chính là tôi muốn Oracle làm tối thiểu cho truy vấn này - tôi chỉ cần biết nếu có bất kỳ hàng nào phù hợp với tiêu chí.
Và có, những cột này chắc chắn sẽ được lập chỉ mục.
@Tony - bạn sẽ làm một số (*) thay vì một EXISTS? Với tôi, một EXISTS có vẻ tự nhiên hơn ngay cả khi bạn cần phải giải quyết ngoại lệ. –
Bạn có nghĩa là "chọn 1 từ hai nơi tồn tại (...)"? Tôi sẽ không, nhưng có thể hiểu tại sao một số sẽ. Những gì thực sự muốn được trully tự nhiên là một PL/SQL xây dựng như "NẾU tồn tại (chọn ...) THEN ..."! –
Tôi lười biếng ở đây vì không tự mình thử nghiệm, nhưng sẽ không tính (x_id) nhanh hơn đếm (*), hoặc là thông dịch viên sql đủ thông minh để thấy rằng nó không thực sự cần mở rộng "*" ? –