Anh em được học và truyền dạy rất nhiều nguyên tắc khi làm việc với Database, nhưng phần lớn khi vào "võ đài" đều toạch hết.
Ví dụ:
- Người ta bảo là đừng SELECT * nhé, và nhiều anh em tin rằng khi SELECT chỉ để 1 số cột thôi thì sẽ nhanh hơn.
- Sự thực là: SELECT 1 cột thì vẫn có thể chậm tương đương với SELECT * (thuần túy xét hiệu năng xử lý trên hệ thống, bỏ qua phần network truyền dữ liệu).
- Người ta nói rằng tối ưu câu lệnh thì thêm INDEX vào các điều kiện lọc cho nó nhanh
- Sự thực là: Đôi khi bỏ INDEX đi lại làm câu lệnh nhanh lên, nếu không hiểu gốc rễ thì chẳng thể giải thích và xử lý được các case này (tôi nói trong trường hợp SELECT luôn nhé chứ không phải DML).
- Người ta lại bảo là phải LỌC trước để ít dữ liệu hơn thì sẽ nhanh
- Sự thực là: Nếu chỉ lọc bằng cách thêm WHERE mà không biết câu lệnh chạy thực tế trong database ra sao thì hệ thống vẫn chậm lòi mắt ngay.
Vậy con đường học tối ưu như thế nào
- Đừng học theo cách mà người lập trình nghĩ, anh em phải hiểu được bản chất của Database. Đây là cách học 1 biết 10. Khi nhìn Database nó cực kỳ RÕ RÀNG thì làm việc mới ngon được.
- Các tài liệu nên xem
Thứ nhất: Xem cách hiểu Database tường minh để tối ưu: https://www.youtube.com/watch?v=aRkidzUZ-gg
Thứ hai: Hãy xem việc chỉ thay đổi nhỏ có thể cải thiện hàng trăm lần thế nào (nếu trong thực tế có thể tụt huyết áp hệ thống luôn) Đọc bài viết này: https://www.wecommit.com.vn/blog/toi-uu-sql-cau-lenh-luc-nhanh-luc-cham
Thứ ba: Những kiến thức được chia theo từng loại Database đã được tôi tổng hợp cho anh em cộng đồng (đăng ký là xem được): https://primecircle.wecommit.com.vn/courses