ARTICLEs

Tối ưu hoá câu lệnh SQL trong Store Procedure khi sử dụng các truy vấn INSERT, UPDATE, DELETE0

An article of Truong Minh Tuan created at 2017-03-28 14:32:09

Store Procedure (SP) là một thủ tục rất tuyệt vời, giúp cho lập trình viên giải quyết các bài toán về truy vấn SQL phức tạp. Vì thế, bạn nên dùng VIEW hoặc SP thay cho truy vấn SQL trong các sản phẩm của bạn. Và trong phạm vi bài viết này, mình gửi đến các bạn một vấn đề nhỏ nhưng có thể làm cho ứng dụng trở nên chậm đi đôi chút đó là SET NOCOUNT {ON | OFF}

Thật ra SET NOCOUNT này không đáng kể gì đến ứng dụng của bạn, tuy nhiên nếu bạn làm việc với Database lớn thì việc không INDEX và không SET NOCOUNT thì chắc chắn phần mềm của bạn trở nên chậm đôi chút, thậm chí là rất chậm nếu chúng ta có ít kinh nghiệm về việc này.

Vậy SET NOCOUNT là gì? SET NOCOUNT là câu thông báo cho người dùng biết là số dòng được thực thi hay chỉ là một câu thông báo hoàn thành

Cụ thể trong khi thực thi câu lệnh dưới đây:

SET NOCOUNT OFF;  
GO  
-- Display the count message.  
SELECT TOP(5) FullName
FROM Account
GO  
-- SET NOCOUNT to ON to no longer display the count message.  
SET NOCOUNT ON;  
GO  
SELECT TOP(5) FullName
FROM Account
GO  

Cụ thể trong kết quả trả về ResultsMessages nhận được:

SET NOCOUNT OFF: (5 row(s) affected)
SET NOCOUNT ON: Command(s) completed successfully.

Một điều khác khi bạn làm việc với SP có chứa rất nhiều câu lệnh SQL, thậm chí là T-SQL loops, thì việc SET NOCOUNT ON trở nên hiệu quả và tăng hiệu suất đáng kể, bởi vì lưu lượng mạng được giảm khá nhiều. 

Việc sử dụng hay không sử dụng SET NOCOUNT là tuỳ thuộc vào sở thích của mỗi người. Tuy nhiên, bản thôi tôi thì thường xuyên dùng thậm chí là INDEX kết hợp với IEnumerable<T> trong LINQ để tăng hiệu suất làm việc với Cơ sở dữ liệu

Các bạn comment bên dưới để cùng trao đổi nhé.

Trương Minh Tuấn

 

 

 

 

 







TRUONG MINH TUAN - support: ifsoft@live.com