- vừa được xem lúc

Mẹo tối ưu SQL trong thực tế có thể bạn chưa biết - Phần 1

0 0 13

Người đăng: LDT

Theo Viblo Asia

Đây là vấn đề mình gặp trong quá trình làm việc, viết vào đây vừa để note lại cho bản thân, vừa chia sẻ với mọi người.

Có 1 bảng users(id, name, created_date) 100tr bản ghi column created_date đã được đánh index

Yêu cầu đặt ra là lấy tất cả thông tin users của nhưng user được tạo trong năm 2020 Ban đầu mình cũng nghĩ dùng hàm year để tính năm rồi so sánh như thế này.

select *
from users u
where year(u.created_date) = 2020 ;

Ai nhìn cũng bảo dễ, viết là xong ngay, các bạn hay ngừng lại 5 phút suy nghĩ xem vấn đề nằm ở chỗ nào, có cách nào tối ưu hơn không?

Vấn đề

Sử dụng hàm year() làm mất index của cột bị đánh index và nó sẽ phải tính toán tất cả các giá trị trong bảng users rồi mới so sánh.

Giải pháp

Hạn chế dùng hàm để thay đổi giá trị của cột đã được đánh index. Trong bài toàn này, thay vì tính toán Year, chúng ta có thể so sánh với 2 mốc thời gian như bên dưới.

select *
from users u
where u.created_date >= '01-01-2020' && u.created_date < '01-01-2021' ;

Bằng cách này, chúng ta giữ được index, giảm thời gian querry.

Kết luận

Đây là 1 bài toán khá đơn giản, nhưng đôi khi chúng ta không để ý, nếu nó được sử dụng trong 1 câu query phức tạp, thì chúng ra khó mà phát hiện lỗi ở chỗ nào. Cần xử lý 1 cách cẩn thận từ các câu query nhỏ, hiểu rõ bản chất từ đó giúp chúng ta xử lý các câu query phức tạp hơn.

Nếu cần trao đổi, mọi người hãy comment bên dưới.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Stored Procedure trong SQL Server

Stored Procedure là 1 phần không thể thiếu của SQL Server. Chúng có thể hỗ trợ rất nhiều cho lập trình và cấu hình cơ sở dữ liệu.

0 0 134

- vừa được xem lúc

sử dụng index trong sql query

Index là một trong những yếu tố quan trọng nhất góp phần vào việc nâng cao hiệu suất của cơ sở dữ liệu. Index trong SQL tăng tốc độ của quá trình truy vấn dữ liệu bằng cách cung cấp phương pháp truy xuất nhanh chóng tới các dòng trong các bảng, tương tự như cách mà mục lục của một cuốn sách giúp bạn

0 0 178

- vừa được xem lúc

Hướng dẫn sửa lỗi không cài được SQL Server

Hôm qua do yêu cầu môn học, mình có cài lại Microsoft SQL Server. Trước đó mình có cài rồi, nhưng rồi lâu không dùng nên gỡ ra cho nhẹ máy. Bây giờ có dịp cần nên mình mới cài lại. Chi tiết lỗi mình gặp phải.

0 0 119

- vừa được xem lúc

Bạn nên tránh sử dụng Soft Delete khi có thể, và đây là lý do tại sao

Con người luôn luôn mắc sai lầm. Vì vậy, việc "lo xa" trước mọi tình huống xấu nhất chưa bao giờ là thừa.

0 0 126

- vừa được xem lúc

Sử dụng trigger trong SQL qua ví dụ cơ bản.

Trigger là gì . Cú pháp của Trigger. CREATE TRIGGER tên_trigger ON tên_bảng. FOR {DELETE, INSERT, UPDATE}.

0 0 144

- vừa được xem lúc

Khác biệt giữa khóa chính và khóa ngoại trong SQL

Các khoá chính và khóa ngoại là hai loại ràng buộc có thể được sử dụng để thực thi toàn vẹn dữ liệu trong các bảng SQL Server và đây là những đối tượng cơ sở dữ liệu quan trọng. Trong bài này, tôi muố

0 0 131