SQL Server: Một số cách tăng hiệu xuất truy vấn trong SQL Server
Tổng quan
Điều chỉnh SQL là quá trình cải thiện các truy vấn SQL để tăng tốc hiệu suất máy chủ của bạn. Mục đích chung của nó là giảm lượng thời gian người dùng cần để nhận được kết quả sau khi đưa ra truy vấn và giảm lượng tài nguyên được sử dụng để xử lý truy vấn. Sự thật rằng đôi khi bạn có thể tạo cùng một tập hợp kết quả mong muốn với một truy vấn khác chạy nhanh hơn. Trong bài học này, bạn sẽ học cách xác định khi nào truy vấn của bạn có thể được cải thiện và một số cách cải thiện chúng.
Lưu ý:
Tốc độ xử lý truy vấn cũng phụ thuộc vào dữ liệu cần truy vấn, nên có thể trong trường hợp này truy vấn này có thể chạy chậm hơn truy vấn khác nhưng khi đổi dữ liệu truy vấn kết quả có thể ngược lại
Lý thuyết đằng sau thời gian chạy truy vấn
Cơ sở dữ liệu là một phần mềm chạy trên máy tính và có những hạn chế giống như tất cả các phần mềm—nó chỉ có thể xử lý nhiều thông tin mà phần cứng của nó có khả năng xử lý. Cách để làm cho truy vấn chạy nhanh hơn là giảm số lượng phép tính mà phần mềm (và do đó là phần cứng) phải thực hiện. Để làm điều này, bạn sẽ cần hiểu biết về cách SQL thực sự thực hiện các phép tính. Trước tiên, hãy giải quyết một số vấn đề cấp cao sẽ ảnh hưởng đến số lượng phép tính bạn cần thực hiện và do đó ảnh hưởng đến thời gian chạy truy vấn của bạn:
- Kích thước bảng: Nếu truy vấn của bạn chạm vào một hoặc nhiều bảng có hàng triệu hàng trở lên, điều đó có thể ảnh hưởng đến hiệu suất.
- Nối: Nếu truy vấn của bạn nối hai bảng theo cách làm tăng đáng kể số hàng của tập hợp kết quả thì truy vấn của bạn có thể bị chậm. Có một ví dụ về điều này trong bài học truy vấn phụ .
- Tập hợp: Việc kết hợp nhiều hàng để tạo ra kết quả đòi hỏi nhiều tính toán hơn là chỉ truy xuất các hàng đó.
Thời gian chạy truy vấn cũng phụ thuộc vào một số thứ mà bạn thực sự không thể kiểm soát liên quan đến chính cơ sở dữ liệu:
- Những người dùng khác đang chạy truy vấn: Càng có nhiều truy vấn chạy đồng thời trên cơ sở dữ liệu thì cơ sở dữ liệu càng phải xử lý nhiều tại một thời điểm nhất định và mọi thứ sẽ chạy càng chậm. Điều này có thể đặc biệt tệ nếu những người khác đang chạy các truy vấn đặc biệt tốn nhiều tài nguyên đáp ứng một số tiêu chí trên.
- Phần mềm cơ sở dữ liệu và tối ưu hóa: Đây là điều bạn có thể không thể kiểm soát, nhưng nếu bạn biết hệ thống mình đang sử dụng, bạn có thể làm việc trong giới hạn của nó để làm cho các truy vấn của bạn hiệu quả hơn.
Hiện tại, hãy bỏ qua những điều bạn không thể kiểm soát và tập trung vào những điều bạn có thể.
Giảm kích thước bảng
Việc lọc dữ liệu để chỉ bao gồm những dữ liệu bạn cần quan sát có thể cải thiện đáng kể tốc độ truy vấn. Cách bạn thực hiện việc này sẽ phụ thuộc hoàn toàn vào vấn đề bạn đang cố gắng giải quyết. Ví dụ: nếu bạn có dữ liệu chuỗi thời gian, việc giới hạn ở một khoảng thời gian nhỏ có thể khiến truy vấn của bạn chạy nhanh hơn nhiều:
SELECT * FROM benn.sample_event_table WHERE event_date >= '2014-03-01' AND event_date < '2014-04-01'
Hãy nhớ rằng bạn luôn có thể thực hiện phân tích khám phá trên một tập hợp con dữ liệu, tinh chỉnh công việc của mình thành truy vấn cuối cùng, sau đó loại bỏ giới hạn và chạy công việc của bạn trên toàn bộ tập dữ liệu. Truy vấn cuối cùng có thể mất nhiều thời gian để chạy nhưng ít nhất bạn có thể chạy nhanh các bước trung gian.