Sqlserver tại sao không chọn query plan tốt nhất

Tối ưu hóa cơ sở dữ liệu là điều rất khó khăn, nó sẽ là thử thách cho các bạn làm việc với một cơ sở dữ liệu có quy mô đủ lớn. Lúc này, bài toán đặt ra là hiệu suất và thời gian thực thi câu lệnh bên trong ứng dụng là rất quan trọng. Vì khi đó bạn không thể đưa ra phương án là nâng cấp CPU, RAM hay ổ đĩa nó là quá tốn kém nếu không thật sự cần thiết. Vì vậy chúng ta nên có một số lưu ý khi thực hiện viết câu lệnh thực thi bên trong SQL Server để cải thiện hiệu suất và thời gian truy vấn.

Chọn lựa và tối ưu chỉ mục Index

Chỉ mục [Index] là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để tăng thời gian và hiệu suất truy vấn dữ liệu. Hiểu đơn giản, một chỉ mục là một con trỏ tới dữ liệu trong một bảng. Chỉ mục có thể được hiểu tương tự như một chỉ mục trong Mục lục của cuốn sách.
Index giúp tăng tốc các truy vấn SELECT và các mệnh đề WHERE, nhưng nó làm chậm việc UPDATE và INSERT dữ liệu và bảng. Các chỉ mục có thể được tạo hoặc xóa mà không ảnh hưởng tới dữ liệu.Việc sử dụng Index sẽ phù hợp với những DB có lượng dữ liệu lớn và ít có thay đổi [vd: như thông tin khách hàng của ngân hàng].
Tạo Index như sau :

CREATE INDEX index_name ON table_name;

Xóa Index:

DROP INDEX index_name;

Chọn lựa các thông tin cần thiết

Thói quen của chúng ta thường là thực hiện một câu query all dữ liệu mà không thực hiện lọc ra những dữ liệu thực sực cần thiết cho công việc. Điều này cũng làm tăng đáng kể thời gian truy vấn dữ liệu vì nó chiếm dụng nhiều bộ nhớ hơn, dữ liệu truyền tải từ server tới client cũng lớn hơn. Vì vậy hãy tạo thói quen phân tích và lọc ra những dữ liệu cần thiết trước khi thực hiện một câu truy vấn.

SELECT * FROM table_1 LEFTJOIN table_2 WHERE table_1.id = table_2.gid;

Hãy chuyển câu query trên về như sau:

SELECT table_1.id,table_2.username,table_2.lucky FROM table_1 LEFTJOIN table_2 WHERE table_1.id = table_2.gid;

Tối ưu các toán tử trong điều kiện where

Toán tử phủ định 

“IS NULL”, “!=”, “!>”, “!

Chủ Đề