2011-10-17 14 views
5

Đã nối thêm LIMIT 1 sau khi truy vấn có bất kỳ tăng hiệu suất nào không?LIMIT 1 có tăng hiệu suất không?

... nếu có thể chỉ có một mục nhập phù hợp (mệnh đề WHERE cho khóa chính)?

SELECT `x` 
FROM `unicorns` 
WHERE `id` = 123 
LIMIT 1 

... giống nhau, nhưng bây giờ nó DELETE:

DELETE FROM `unicorns` 
WHERE `id` = 123 
LIMIT 1 

... và UPDATE:

UPDATE `unicorns` 
SET `rainbows` = `rainbows` + 1 
WHERE `id` = 123 
LIMIT 1 

T.B. Cột id là khóa chính nên nó là duy nhất.

Cảm ơn lời khuyên!

+1

giới hạn, trong trường hợp này, sẽ không có hiệu lực. Ngoài ra, bạn không cần báo giá xung quanh tên cột của mình. – DwB

+4

Cá nhân tôi cảm thấy nó vẫn tốt cho sự rõ ràng và habbit – Will03uk

Trả lời

4

nó phụ thuộc bạn có chỉ mục trên cột hay không

DELETE FROM `unicorns` WHERE `id` = 123 LIMIT 1 

là vô nghĩa nếu id là khóa chính, nhưng

DELETE FROM `unicorns` WHERE `noindexoclumn` = 123 LIMIT 1 

sẽ cung cấp cho u Biến tăng

0

Nó sẽ thúc đẩy hiệu suất trong đó DB sẽ chỉ bắt đầu tìm nạp các hàng thỏa mãn các điều kiện của truy vấn. Nhưng về cập nhật, điểm là gì? Đặc biệt nếu bạn đang thực hiện khớp chính xác trên khóa chính - bạn chỉ bao giờ khớp một hàng để bắt đầu, vì vậy không có vấn đề gì khi nói "cập nhật hàng này trong bảng, nhưng chỉ cập nhật một hàng tại phần lớn".