2011-11-16 50 views
10

Tôi muốn biết cách tối đa hóa tốc độ khi truy vấn giá trị varchar trong một cột trong một bảng cụ thể. Tôi không cần biết nó ở đâu, hoặc có bao nhiêu lần xuất hiện, tôi chỉ muốn một số true/false. Tất nhiên, cột có chỉ mục.Giá trị kiểm tra nếu tồn tại trong cột

Bây giờ, tôi có điều này:

SELECT exists (SELECT 1 FROM table WHERE column = <value> LIMIT 1); 
+0

Đối với kiểm tra nếu một tên cột tồn tại, xem http://stackoverflow.com/a/10636439/287948 –

Trả lời

13

EXISTS nên bình thường trở lại càng sớm càng subquery tìm thấy một hàng thỏa mãn mệnh đề WHERE của nó. Vì vậy, tôi nghĩ rằng truy vấn của bạn nhanh như bạn có thể làm cho nó.

Tôi hơi ngạc nhiên rằng LIMIT 1 dường như luôn tăng tốc truy vấn rất ít. Tôi không mong đợi điều đó. Bạn có thể thấy hiệu ứng với EXPLAIN ANALYZE.

EXPLAIN ANALYZE 
SELECT exists (SELECT 1 FROM table WHERE column = <value> LIMIT 1); 
+0

Bạn có thể cho tôi biết cách truy vấn thường được sử dụng cho việc này (kiểm tra nếu tồn tại với tốc độ tối đa) – Perlos

Các vấn đề liên quan