tailieunhanh - Những thói quen tốt khi viết câu lệnh T-SQL- P4

Tham khảo tài liệu 'những thói quen tốt khi viết câu lệnh t-sql- p4', công nghệ thông tin, cơ sở dữ liệu phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả | rằng TableColumn bằng giá trị của @PARM. Phần thứ hai của điều kiện đó là @PARM IS NULL . Phần này có nghĩa nếu @PARM không có giá trị truyền vào bằng NULL thì không ràng buộc dữ liệu dựa trên tham số ấy. Cùng xem quá trình thực thi điển hình của JackOfAllTrades SP. Giả sử ta thực thi SP với lệnh sau EXEC JackOfAllTrades @SalesOrderID 43659 TZ1 1 X 1 V 1 -4-Ă j1 j1 J X 1 Khi chạy câu lệnh sơ đồ thực thi trông như sau ĩlití Cwt Ũ í c v t ỈHỈK cúỉ 0 I hkir Cíĩt 0 I t ttk Jfiti bit JI 1 1Mb Jew íiàíiOrdtràitiLl I. ilKihiMirt1 Cort ill OUfM Ittl If 11 l J1 7 1 ill HÙrdtr ta u 11. FKSil irtKM. wit 1 iỉí tort ì 1 Ở đây bạn có thể thấy đối với mỗi tham số đơn được truyền vào máy chủ quyết định sử dụng thao tác quét chỉ mục . Câu lệnh SELECT của SP ràng buộc cột duy nhất @SalesOrderID - một phần của khóa chỉ mục cụm. Bạn có thể nghĩ máy chủ SQL đủ thông minh để nhận ra rằng xử lý thủ tục lưu trữ đa năng bằng thao tác tìm kiếm chỉ mục sẽ nhanh hơn là lao vào chỉ mục cụm. Thế nhưng như ta thấy trên sơ đồ thực thi máy chủ SQL không thông minh đến vậy. Tại sao thế Khi máy chủ nhìn thấy điều kiện @PARM IS NULL nó như một hằng số đối với máy chủ SQL. Vì thế máy chủ coi như không có chỉ mục nào hữu ích giúp xử lý điều kiện TableColumn @PARM1 or @PARM1 IS NULL bởi lẽ hằng số đang ở trong mệnh đề WHERE. Chính vì vậy mà máy chủ SQL quyết định sử dụng thao tác quét chỉ mục để giải quyết vấn đề. Thủ tục lưu trữ đa năng càng có nhiều tham số hiệu suất càng giảm do tác động của số lượng thao tác quét cần thiết cho mỗi tham số truyền vào. Tối ưu hóa thủ tục lưu trữ đa năng Bạn không cần phải chấp nhận sử dụng thủ tục lưu trữ đa năng rất kém hiệu quả như SP đã viết trong ví dụ trên. Hãy cùng khám phá xem SP sau đây có thể làm những gì và viết lại nó để công cụ tối ưu truy vấn của máy chủ SQL có thể tạo kế hoạch thực thi tối ưu hơn. Như đã nói ở trên vấn đề thực sự với thủ tục lưu trữ đa năng đó là đối với mỗi tham số bạn cần có một điều kiện OR để kiểm tra xem tham số truyền vào có phải .

TỪ KHÓA LIÊN QUAN