2009-05-15 43 views
31

Ai đó có thể vui lòng xác định sự khác biệt về chức năng/hiệu suất, nếu có, giữa SETSELECT trong T-SQL? Dưới những điều kiện nào tôi nên chọn một cái khác?SET so với CHỌN - Sự khác biệt là gì?


UPDATE:
Nhờ tất cả những ai đáp lại. Như một vài người đã chỉ ra, this bài viết của Narayana Vyas Kondreddi có rất nhiều thông tin tốt. Tôi cũng perused mạng sau khi đọc bài báo và thấy this phiên bản ngưng tụ bởi Ryan Farley trong đó cung cấp những điểm nổi bật và nghĩ rằng tôi sẽ chia sẻ chúng:

  1. SET là tiêu chuẩn ANSI cho giao biến, SELECT thì không.
  2. SET chỉ có thể gán một biến tại một lần, CHỌN có thể thực hiện nhiều bài tập cùng một lúc.
  3. Nếu gán từ truy vấn, SET có thể chỉ gán giá trị vô hướng. Nếu truy vấn trả về nhiều giá trị/hàng thì SET sẽ phát sinh lỗi. CHỌN sẽ chỉ định một trong các giá trị vào biến và giấu một thực tế rằng nhiều giá trị đã được trả lại (vì vậy bạn muốn có khả năng không bao giờ biết tại sao một cái gì đó đã đi sai ở đâu đó - có xử lý sự cố thú vị mà một)
  4. Khi gán từ một truy vấn nếu có không có giá trị trả về sau đó SET sẽ assign NULL, nơi CHỌN sẽ không làm nhiệm vụ ở tất cả (vì vậy biến sẽ không được thay đổi từ giá trị của nó trước)
  5. theo như tốc độ khác nhau - có không có sự khác biệt trực tiếp giữa THIẾT LẬP và CHỌN. Tuy nhiên, khả năng thực hiện nhiều nhiệm vụ của của SELECT là trong một lần chụp sẽ mang lại lợi thế về tốc độ nhẹ hơn SET.
+0

cập nhật tốt; đã sử dụng cả hai nhà khai thác trong khoảng 3 năm nhưng không nhận ra sự khác biệt – whytheq

Trả lời

24

SET là cách chuẩn ANSI gán giá trị cho biến và SELECT không phải là. Nhưng bạn có thể sử dụng SELECT để gán giá trị cho nhiều biến cùng một lúc. SET cho phép bạn chỉ định dữ liệu cho một biến tại một thời điểm. Vì vậy, trong hiệu suất là nơi SELECT sẽ là một người chiến thắng.

Để cụ thể hơn và các ví dụ tham khảo: Difference between SET and SELECT when assigning values to variables

3

bộ và chọn cả hai giá trị assign cho các biến. Sử dụng lựa chọn bạn có thể gán giá trị cho nhiều hơn một biến

một số điều như

chọn @ var1 = 1, @ var2 = 2

nơi như bằng cách sử dụng thiết bạn phải sử dụng báo cáo bộ riêng biệt (một mình Cách gán giá trị ANSI)

bộ @ var1 = 1

bộ @ var2 = 2

Tôi hy vọng điều này sẽ giúp

cổ vũ

6

ĐặtANSI tiêu chuẩn cho gán giá trị cho biến.

Chọn có thể được sử dụng khi gán giá trị cho nhiều vairables.

Để biết thêm chi tiết xin vui lòng đọc bài chi tiết này bằng cách Narayana Vyas

7

SQL Server: một tình huống mà bạn phải sử dụng SELECT là khi gán @@ ERROR và @@ ROWCOUNT như những phải được thiết lập trong báo cáo kết quả tương tự (nếu không họ được reset):

SELECT @error = @@ERROR, @rowcount = @@ROWCOUNT 

(SET chỉ làm việc với một giá trị cùng một thời điểm)

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