SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

Các bước có thể thực hiện để cải thiện hiệu suất truy vấn SQL Server

Run đầu tiên query từ Sql Server Management Studio và xem xét kế hoạch truy vấn để xem cổ chai ở đâu. Bất kỳ nơi nào bạn thấy "quét bảng" hoặc "quét chỉ mục", nó phải đi qua tất cả dữ liệu để tìm những gì nó đang tìm kiếm. Nếu bạn tạo các chỉ mục thích hợp có thể được sử dụng cho các hoạt động này, nó sẽ tăng hiệu suất.

Dưới đây được liệt kê là một số mẹo để cải thiện hiệu suất của truy vấn sql ..

Tránh nhiều kết hợp trong một truy vấn

Cố gắng tránh viết một truy vấn SQL bằng cách sử dụng nhiều phép nối bao gồm các phép nối bên ngoài, áp dụng chéo, áp dụng bên ngoài và các truy vấn phụ phức tạp khác. Nó làm giảm các lựa chọn để Trình tối ưu hóa quyết định thứ tự tham gia và loại tham gia. Đôi khi, Trình tối ưu hóa buộc phải sử dụng các phép nối vòng lặp lồng nhau, bất kể hậu quả về hiệu suất đối với các truy vấn có áp dụng chéo hoặc truy vấn phụ quá phức tạp.

Loại bỏ con trỏ khỏi truy vấn Cố gắng xóa con trỏ khỏi truy vấn và sử dụng truy vấn dựa trên tập hợp; truy vấn dựa trên tập hợp hiệu quả hơn dựa trên con trỏ. Nếu có nhu cầu sử dụng con trỏ hơn là tránh các con trỏ động vì nó có xu hướng hạn chế lựa chọn các phương án có sẵn cho trình tối ưu hóa truy vấn. Ví dụ:con trỏ động giới hạn trình tối ưu hóa sử dụng các phép nối vòng lặp lồng nhau.

Tránh sử dụng truy vấn phụ vô hướng không tương quan Bạn có thể viết lại truy vấn của mình để xóa truy vấn phụ vô hướng không tương quan dưới dạng truy vấn riêng biệt thay vì một phần của truy vấn chính và lưu trữ kết quả đầu ra trong một biến, có thể được tham chiếu đến trong truy vấn chính hoặc phần sau của lô. Điều này sẽ cung cấp các tùy chọn tốt hơn cho Trình tối ưu hóa, có thể giúp trả về các ước tính tổng số chính xác cùng với một kế hoạch tốt hơn.

Tránh các hàm có giá trị trong bảng nhiều câu lệnh (TVF) TVF đa câu lệnh đắt hơn TFV nội tuyến. SQL Server mở rộng các TFV nội tuyến vào truy vấn chính giống như nó mở rộng các khung nhìn nhưng đánh giá các TVF nhiều câu lệnh trong ngữ cảnh riêng biệt với truy vấn chính và hiện thực hóa các kết quả của nhiều câu lệnh thành các bảng công việc tạm thời. Bối cảnh và bảng công việc riêng biệt làm cho TVF nhiều câu lệnh trở nên tốn kém.

Tạo chỉ mục có chọn lọc cao Tính chọn lọc xác định phần trăm các hàng đủ điều kiện trong bảng (số hàng đủ điều kiện / tổng số hàng). Nếu tỷ lệ giữa số hàng đủ điều kiện trên tổng số hàng thấp, thì chỉ mục có tính chọn lọc cao và hữu ích nhất. Chỉ mục không phân cụm sẽ hữu ích nhất nếu tỷ lệ này nằm trong khoảng 5% hoặc ít hơn, có nghĩa là nếu chỉ mục có thể loại bỏ 95% số hàng khỏi việc xem xét. Nếu chỉ mục đang trả về hơn 5% số hàng trong bảng, nó có thể sẽ không được sử dụng; một chỉ mục khác sẽ được chọn hoặc tạo hoặc bảng sẽ được quét.

Định vị một cột trong một chỉ mục Thứ tự hoặc vị trí của một cột trong chỉ mục cũng đóng một vai trò quan trọng để cải thiện hiệu suất truy vấn SQL. Chỉ mục có thể giúp cải thiện hiệu suất truy vấn SQL nếu tiêu chí của truy vấn khớp với các cột được để lại nhiều nhất trong khóa chỉ mục. Như một phương pháp hay nhất, hầu hết các cột chọn lọc nên được đặt ngoài cùng bên trái trong khóa của chỉ mục không phân cụm.

Bỏ các chỉ mục không sử dụng Cắt bỏ các chỉ mục không sử dụng có thể giúp tăng tốc độ sửa đổi dữ liệu mà không ảnh hưởng đến việc truy xuất dữ liệu. Ngoài ra, bạn cần xác định chiến lược cho các quy trình hàng loạt chạy không thường xuyên và sử dụng các chỉ mục nhất định. Trong những trường hợp như vậy, việc tạo chỉ mục trước các quy trình hàng loạt và sau đó loại bỏ chúng khi các quy trình hàng loạt được thực hiện sẽ giúp giảm thiểu chi phí trên cơ sở dữ liệu.

Tạo và cập nhật thống kê Bạn cần quan tâm đến việc tạo thống kê và cập nhật thường xuyên cho các cột được tính toán và nhiều cột được tham chiếu trong truy vấn; trình tối ưu hóa truy vấn sử dụng thông tin về việc phân phối các giá trị trong một hoặc nhiều cột của thống kê bảng để ước tính số lượng hoặc số lượng hàng, trong kết quả truy vấn. Các ước tính về số lượng này cho phép trình tối ưu hóa truy vấn tạo ra một kế hoạch truy vấn chất lượng cao.

Xem lại các định nghĩa giản đồ của bạn Cuối cùng nhưng không kém phần quan trọng, hãy truy cập lại các định nghĩa lược đồ của bạn; Hãy để ý xem có các ràng buộc FORIGEN KEY, NOT NULL và CEHCK thích hợp hay không. Sự sẵn có của ràng buộc phù hợp ở đúng nơi luôn giúp cải thiện hiệu suất truy vấn, như ràng buộc FORIGEN KEY giúp đơn giản hóa các phép nối bằng cách chuyển đổi một số phép nối ngoài hoặc một số phép nối thành phép nối bên trong và ràng buộc CHECK cũng giúp một chút bằng cách loại bỏ các vị từ không cần thiết hoặc thừa.

Tham khảo




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Làm cách nào để xóa tên máy chủ đã lưu trong bộ nhớ cache khỏi hộp thoại Kết nối với Máy chủ?

  2. Tạo tập lệnh máy chủ SQL từ dòng lệnh?

  3. SQL Server Management Studio - Tìm tất cả các bảng không trống

  4. không thể truy cập sql server developer sp1 ssis từ ssms

  5. Làm thế nào để có được sự chênh lệch thời gian tối đa giữa 2 hàng liên tiếp bất kỳ trên mỗi giá trị?