2008-09-26 71 views
20

Bạn nên sử dụng vòng lặp thay vì con trỏ? Ưu điểm/nhược điểm của con trỏ là gì?Con trỏ verus trong khi vòng lặp - những ưu điểm/nhược điểm của con trỏ là gì?

+0

Bạn có nghĩa là vòng lặp while trong mã phía máy khách không? Bạn có thể cung cấp ví dụ không? – Kev

+0

Tôi đồng ý với Kev, bạn có thể giải thích về những gì bạn đang cố gắng thực hiện không? –

+2

Tôi nghĩ tác giả câu hỏi có nghĩa là bạn có thể mô phỏng một vòng lặp bằng cách đặt các mục được lặp lại vào một bảng tạm thời. Sau đó bạn có thể 'vòng lặp' qua các mục có vòng lặp Đếm (1) <> 0. Trên mỗi vòng lặp, bạn xử lý một mục và loại bỏ nó khỏi bảng tạm thời. WHERE loop so với CURSOR do đó là một câu hỏi hay về hiệu suất và các ưu điểm khác. – redcalx

Trả lời

9

Một số phụ thuộc vào DBMS, nhưng nói chung:

Ưu điểm:

  • Vòng lặp hoạt động tốt khi nói đến xử lý từng hàng

  • trình cũng hợp lý với các tập dữ liệu lớn

Nhược điểm:

  • Đừng quy mô cũng

  • Sử dụng nhiều tài nguyên máy chủ

  • Tăng tải về tempdb

  • Có thể gây rò rỉ nếu sử dụng không chính xác (ví dụ: Mở mà không tương ứng Đóng)

0

Một số nhược điểm của con trỏ là here

Sau đó, cũng là this (Trên thực tế là một vấn đề rất thú vị được gọi là - "Vấn đề Halloween")

1

Tôi sẽ hỏi bạn những gì bạn đang làm với vòng lặp con trỏ/vòng lặp đó.

Nếu bạn đang cập nhật hoặc trả lại dữ liệu tại sao bạn không sử dụng mệnh đề WHERE phù hợp. Tôi biết những người sẽ nói rằng bạn không bao giờ nên sử dụng con trỏ.

10

tôi sau này chút lời khuyên:

[...] mà là tốt hơn: con trỏ hoặc vòng KHI? Một lần nữa, nó thực sự phụ thuộc về tình hình của bạn. Tôi hầu như luôn sử dụng con trỏ để lặp qua các bản ghi khi cần . Định dạng con trỏ là trực quan hơn một chút đối với tôi và, vì tôi chỉ sử dụng các cấu trúc để lặp lại kết quả được đặt một lần, nó có ý nghĩa khi sử dụng con trỏ FAST_FORWARD . Hãy nhớ rằng loại con trỏ mà bạn sử dụng sẽ có tác động rất lớn về hiệu suất của cấu trúc vòng lặp của bạn.

— Tim Chapman trong Comparing cursor vs. WHILE loop performance in SQL Server 2008

Các bài viết liên kết chứa các ví dụ đơn giản về cách thực hiện từng phương pháp.

+0

Đáng buồn là nội dung siêu liên kết không còn tồn tại nữa. Tôi nghĩ rằng đây là bài viết: http://www.techrepublic.com/blog/the-enterprise-cloud/comparing-cursor-vs-while-loop-performance-in-sql-server-2008/1741/ –

+0

@PawelKrakowiak Cố định, cảm ơn. –

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