Đơn giản hơn, ngắn hơn, nhanh hơn: EXISTS
.
IF EXISTS (SELECT 1 FROM people p WHERE p.person_id = my_person_id) THEN
-- do something
END IF;
Công cụ lập kế hoạch truy vấn có thể dừng lại ở hàng đầu tiên được tìm thấy - trái ngược với count()
, sẽ quét tất cả các hàng (phù hợp) bất kể. Tạo nên sự khác biệt với những chiếc bàn lớn. Sự khác biệt nhỏ đối với một điều kiện trên một cột duy nhất:chỉ một hàng đủ điều kiện và có một chỉ mục để tra cứu nó một cách nhanh chóng.
Bạn chỉ có thể sử dụng SELECT
trống danh sách:
IF EXISTS (SELECT FROM people p WHERE p.person_id = my_person_id) THEN ...
SELECT
danh sách không ảnh hưởng đến kết quả của EXISTS
. Chỉ sự tồn tại của ít nhất một hàng đủ điều kiện mới quan trọng.