2011-12-11 32 views
9

Nếu tôi có một khóa chính của nói id và tôi làm một truy vấn đơn giản cho các trọng điểm như,Việc sử dụng "LIMIT 1" có tăng tốc truy vấn trên khóa chính không?

SELECT id FROM myTable WHERE id = X 

Nó sẽ tìm một hàng và sau đó ngừng tìm kiếm vì nó là một khóa chính, hoặc sẽ nó được tốt hơn để nói với mysql để hạn chế lựa chọn của nó bằng cách sử dụng LIMIT 1? Ví dụ:

SELECT id FROM myTable WHERE id = X LIMIT 1 
+0

Tại sao bạn không thử? –

+1

Làm cách nào để thử? Nó sẽ luôn luôn trở lại chỉ 1 hàng, tôi muốn biết nếu nó ngừng làm một bảng đầy đủ quét sau khi tìm chìa khóa chính! – cgweb87

+1

@ cgweb87: Vui lòng xác nhận rằng chỉnh sửa của tôi cho câu hỏi của bạn làm cho câu hỏi của bạn rõ ràng hơn và không xa ý định của bạn. –

Trả lời

7

Có. Không cần quét bảng nào cả ở đây: đây là tra cứu dựa trên khóa. Hàng phù hợp được tìm thấy và đó là kết thúc của thủ tục.

+1

Cảm ơn tuyệt vời .... – cgweb87

+0

Việc sử dụng “LIMIT 1” có tăng tốc truy vấn trên khóa chính không? Có hoặc Không. Câu trả lời của bạn cho thấy "không" nhưng nói "có". – TarranJones

+0

@TarranJones: Tôi không hiểu tại sao bạn nghĩ nó gợi ý "không". –

3

Không cần phải lo lắng về loại "tối ưu hóa" này.

Chỉ một hàng sẽ được tìm nạp - theo hợp đồng chỉ mục duy nhất - và cơ sở dữ liệu có thể rất nhanh chóng tìm tất cả (1) hàng. Nó có thể thực hiện điều này vì các cấu trúc bên dưới giúp chỉ mục (hoặc khóa chính) hỗ trợ tìm kiếm nhanh theo giá trị. Không có bảng quét liên quan. (Thông thường một biến thể của cây B, nhưng nó có thể là băm, vv ..) được sử dụng. Tôi cho rằng trình tối ưu hóa truy vấn thông minh cũng có thể chuyển các gợi ý bổ sung dựa trên ràng buộc duy nhất có hiệu lực, nhưng tôi không t biết đủ về điều này.)

+0

Cảm ơn, cơ sở dữ liệu của tôi có hơn 500.000 hàng với các phím độc đáo và chỉ cố gắng tăng tốc hiệu suất một chút. – cgweb87

+0

@ cgweb87 Bạn luôn có thể chạy thử nghiệm. Tôi nghi ngờ "không thay đổi", nhưng nếu bạn phát hiện một sự khác biệt đáng chú ý, thì 1) lợi nhuận 2) viết tiếp theo SO câu hỏi 3) lợi nhuận nhiều hơn :) –

+0

@ cgweb87 Đừng quên phân tích các kế hoạch truy vấn, cũng như đo lường thời gian đồng hồ treo tường. –

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