Danh mục

Những thói quen tốt khi viết câu lệnh T-SQL Phần 1

Số trang: 4      Loại file: pdf      Dung lượng: 212.90 KB      Lượt xem: 7      Lượt tải: 0    
Thư viện của tui

Phí lưu trữ: miễn phí Tải xuống file đầy đủ (4 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

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.
Nội dung trích xuất từ tài liệu:
Những thói quen tốt khi viết câu lệnh T-SQL Phần 1Những thói quen tốt khi viết câu lệnh T-SQL (Phần 1)Nguồn:quantrimang.comQuản Trị Mạng - 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-SQLcũ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àiviế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 codeT-SQL. Qua đó bạn có thể hiểu làm thế nào để viết các câu truy vấn tối ưu, tậndụng tốt tài nguyên máy chủ SQL và cải thiện hiệu suất.Ghi rõ tên cột trong câu lệnh SELECTSELECT * 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áccột từ bảng (hoặc các bảng) được khai báo trong mệnh đề FROM. Đây khôngphải 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ề ứngdụng. Tốt 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 cột trong câu lệnh SELECT mang lại rất nhiều lợiích. Thứ nhất, máy chủ SQL sẽ chỉ trả về dữ liệu cần thiết cho ứng dụng chứkhông phải là một đống dữ liệu mà trong đó có nhiều thứ ứng dụng của bạnkhông hề cần đến. Bằng cách chỉ yêu cầu 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 cần thực hiện để thuthậ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ấusao (*) nên bạn đã giảm 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.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ẽ bắt đầu tiếp nhận dữ liệu cho cột này mà không thay đổimã nguồn ứng dụng. Nếu ứng dụng của bạn chờ đợi số lượng cột nhất địnhđược trả về, nó sẽ bị lỗi ngay khi có người bổ sung cột mới vào một trong cácbảng tham chiếu. Bằng việc khai báo rõ ràng tên từng cột trong câu lệnhSELECT, ứ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 bạn thamchiếu tới trong câu lệnh SELECT.Ghi rõ tên cột trong câu lệnh INSERTCũng giống như trên, bạn nên chỉ rõ tên từng cột bạn muốn chèn dữ liệu vàotrong câu lệnh INSERT. Đừng viết câu lệnh INSERT như sau: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ĩatrong bảng MyTable, và giá trị “A” sẽ được chèn vào cột đầu tiên, “B” vào cột thứhai, “C” vào cột cuối. Nếu ai đó thêm mới một cột vào bảng MyTable, ứng dụngcủa bạn sẽ bị lỗi:Msg 213, Level 16, State 1, Line 1Column name or number of supplied values does not matchtable definition.(Tên cột 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 tục làm việc với điều kiện cột “So4” được tạo với giátrị mặc định DEFAULT hoặc cho phép NULL.Thêm tiền tố cho wildcard để tăng tốc tìm kiếmSử dụng các ký tự thay thế (wildcard) thích hợp có thể cải thiện hiệu suất câutruy vấn. Chẳng hạn bạn muốn tìm kiếm trong bảngAdventureWorks.Person.Contact tất cả LastNames kết thúc bằng “sen”. Giả dụrằng bạn đã xây dựng một chỉ mục trên cột LastName. Nếu bạn viết câu lệnh tìmkiếm như sau:SELECT Distinct LastNameFROM Person.ContactWHERE LastName LIKE %senCâu lệnh sử dụng ký tự phần trăm (%) để thay thế cho không hoặc nhiều ký tựđược theo sau bởi chuỗi “sen” trong trường LastName. Điều này khiến máy chủSQL thực hiện thao tác quét chỉ mục nhằm tìm kiếm tất cả các tên kết thúc bằng“sen” để giải quyết câu truy vấn. Việc này rất có ý nghĩa bởi cho đến khi toàn bộbảng được quét, máy chủ SQL không thể đảm bảo rằng đã tìm ra toàn bộ cácbản ghi có LastName kết thúc bằng “sen”.Ngoài ra, nếu bạn đang tìm kiếm các bản ghi có LastName dài đúng sáu ký tự vàkết thúc bằng “sen”, bạn có thể viết câu lệnh tìm kiếm như sau:SELECT Distinct LastNameFROM Person.ContactWHERE LastName LIKE ___sen’Ở đây, câu lệnh sử dụng ký tự gạch dưới (_) để thay thế cho một ký tự đơn. Vídụ này tương tự với ví dụ ở phần trên và sử dụng thao tác quét chỉ mục để giảiquyết. Một lần nữa, máy chủ SQL biết rằng cần phải quét toàn bộ chỉ mục trướckhi đảm bảo đã tìm thấy tất cả các tên dài sáu ký tự và kết thúc bằng “sen” trongbảng Person.Contact.Máy chủ SQL có thể trả về kết quả nhanh hơn nếu nó không phải đọc toàn bộchỉ mục bằng cách sử ...

Tài liệu được xem nhiều:

Gợi ý tài liệu liên quan: