Về cơ bản thì để tăng tốc query, có những cách sau:
1. Hardware: Thêm RAM, thêm CPU, thay HDD bằng SSD có tốc độ cao hơn, tăng bandwidth mạng.
2. Database configuration: cấu hình DB sao cho sử dụng tối ưu resources, bỏ những cái không cần thiết (vd database thường thì không lý do gì cần encrypted, thậm chí một số DB không cần transaction log backup… ), phân bổ data files and log files trên những phân vùng phù hợp,…
3. Database replication, hot standby: dùng các kiểu replicate mà CSDL hổ trợ, route các câu lệnh query về hot standby.
4. Table partitioning: tùy theo application behavior, có thể partition table sao cho những phần thường được query chung nằng cùng partitions, những partitions này có thể đặt ở đĩa có IOPS cao hơn như SSD.
5. Index: trên những column trong điều kiện WHERE, JOIN,… lưu ý không phải khi nào Index cũng được xài, tùy theo các biểu thức điều kiện như AND/OR hoặc so sánh LIKE… đó là lý do tại sao phải cần xem execution plan.
6. Analytics: Database engine xây đượng execution plan dựa trên dữn liệu được lưu trong statistics, nếu đữ liệu này sai thì plan cũng sai => phải keep statistics up to date.
7. Rewrite query: Vấn đề không phải câu query dài hay ngắn mà là chạy nhanh hay chập, nhất là những câu query phức tạp như subquery cần phải lưu ý đặt WHERE ở đâu cho hợp lý, hay khi nào cần EXIST khi nào cần IN…
…
Nói chung để được performance tốt cần phải tối ư ở nhiều cấp, không phải chỉ Index là đủ! Đó là lý do tại sao phải học từ A-Z. Google hoặc chatgpt chỉ vá được vào chổ lủng chứ không làm ra nguyên cái áo 