Những thói quen tốt khi viết câu lệnh T-SQL
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
Hiệu năng ứng dụng phụ thuộc vào rất nhiều yếu tố,
trong đó có một yếu tố rất quan trọng đó là thời gian để
máy chủ SQL xử lý câu lệnh T-SQL.
Đôi khi thiết kế cơ sở dữ liệu và các yêu cầu truy vấn
phức tạp làm cản trở tốc độ thực thi của các câu lệnh
T-SQL. Cách viết code từng câu lệnh T-SQL cũng có
thể khiến máy chủ SQL phải làm việc nhiều hơn để
xử lý truy vấn. Bài viết sau đây sẽ giới thiệu cho bạn
những thói quen tốt nên tập luyện khi viết code T-
SQL. Qua đó bạn có thể hiểu làm thế nào để viết các
câu truy vn tối ưu, tận dụng tốt tài nguyên y ch
SQL và cải thiện hiệu suất.
Ghi rõ tên ct trong câu lệnh SELECT
SELECT * FROM MyTable;
Bạn đã từng viết câu lệnh như trên bao nhiêu lần?
Việc sử dụng dấu sao (*) cho cơ sở dữ liệu biết rằng
bạn muốn trả về tất cả các cột từ bảng (hoặc các
bảng) được khai báo trong mệnh đề FROM. Đây
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
không phi là một thói quen tốt ngay cả khi bạn
muốn tất cả các cột được trả về ứng dụng. Tt hơn
bạn nên ghi rõ tên từng cột trong bảng như sau:
SELECT ID, Description,
DateModified FROM MyTable;
Việc khai báo rõ ràng tên các ct trong câu lệnh
SELECT mang li rất nhiều lợi ích. Thứ nhất, y
chủ SQL sẽ chỉ trả về dữ liệu cần thiết cho ứng dụng
chứ không phải là mt đống dữ liệu mà trong đó có
nhiều thứ ứng dụng của bạn không hề cần đến. Bằng
cách chỉ yêu cu trả về những dữ liệu cần thiết, bạn
đã góp phần tối ưu hóa khối lượng công việc máy chủ
SQL cn thực hiện để thu thập tất cả các cột của
thông tin bạn yêu cầu. Ngoài ra, nhờ không sử dụng
dấu sao (*) nên bạn đã gim thiểu lưu lượng truyền
tải qua mạng (số byte) cần thiết để gửi các dữ liệu
liên quan đến câu lệnh SELECT tới ứng dụng.
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
Trong trường hợp bạn dùng dấu sao (*) và có một ai
đó thêm cột mới vào bảng, ứng dụng của bạn sẽ bt
đầu tiếp nhận dữ liệu cho cột y mà không thay đổi
mã ngun ứng dụng. Nếu ứng dụng của bạn chờ đợi
số lượng cột nhất định được trvề, nó sẽ bị lỗi ngay
khi có người bổ sung cột mới vào một trong các bảng
tham chiếu. Bằng việc khai báo rõ ràng tên từng cột
trong câu lnh SELECT, ứng dụng sẽ luôn nhận được
số lượng cố định các cột trả về, ngay cả khi có người
thêm cột mới vào các bảng tham chiếu trong câu lệnh
SELECT. Nhờ vậy, bạn đã giúp ứng dụng tránh khỏi
những nguy cơ tiềm tàng liên quan đến các thay đổi
cơ sở dữ liệu có thể xảy đến với bất kỳ bảng nào bn
tham chiếu tới trong câu lệnh SELECT.
Ghi rõ tên ct trong câu lệnh INSERT
Cũng giống như trên, bạn nên chỉ rõ tên từng cột bạn
muốn chèn dliệu vào trong câu lnh INSERT.
Đừng viết câu lệnh INSERT như sau:
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
INSERT INTO MyTable VALUES
('A','B','C');
Khi bạn viết kiểu này, máy chủ SQL đòi hỏi chỉ đúng
ba cột được định nghĩa trong bảng MyTable, và giá
trị “A” sẽ được chèn vào cột đầu tiên, “B” vào ct
thứ hai, “C” vào cột cuối. Nếu ai đó thêm mới một
ct vào bảng MyTable, ứng dụng của bạn sẽ bị lỗi:
Msg 213, Level 16, State 1, Line 1
Column name or number of supplied
values does not match table
definition.
(Tên ct hoặc số lượng giá trị không khớp với bảng)
Vì thế, thay vì viết câu lệnh INSERT như trên, bạn
nên viết như sau:
INSERT INTO MyTable(So1, So2, So3)
VALUES ('A','B','C');
Bằng cách viết trên, khi ai đó thêm mới một cột tên là
“So4” vào bảng MyTable, câu lệnh INSERT vẫn tiếp
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com