Index trong lập trình là gì
Chào các bạn, INDEX trong SQL là một khái niệm mà mình nghĩ rằng bất cứ lập trình viên nào cũng đã phải từng nghe qua. Có thể bạn chưa hiểu rõ INDEX là gì nhưng ít nhất bạn cũng phải từng loáng thoáng nghe nói về tác dụng giúp truy vấn dữ liệu nhanh hơn đúng không nào. Mình biết khái niệm này cũng lâu rồi, tuy vậy lại chưa tìm hiểu kỹ càng nhiều về nó. Hôm nay, nhân một ngày rảnh dỗi mình quyết tâm vác sách vác bút (chém tí chứ thực ra là vác phím) đi tìm hiểu cho thấu rõ huyền cơ về nó. Bài viết này mình viết ra với mục đích là tổng hợp lại những thông tin tổng quan mà mình biết/tìm hiểu về INDEX nhé. Nội dung bài viết
INDEX trong SQL là gì?Nói dễ hiểu thì bạn hay tưởng tượng bạn có một quyển bách khoa toàn thư chứa thông tin về mọi thứ trên đời. Một ngày đẹp trời nào đó bạn bị say nắng ai đó và muốn tìm hiểu về cách tán gán/trai. Bạn sẽ làm thế nào nếu không có mục lục. Tất nhiên là bạn sẽ phải tìm qua từng trang một đến khi nào tìm được toàn bộ những thông tin về bí kíp tán gái/trai đúng không? Còn nếu có mục lục thì mọi thứ sẽ dễ dàng hơn. Chỉ cần dở mục lục ra là bạn sẽ tìm và đọc được ngay bí kíp rồi. Nhưng để mà tạo ra mục lục cho quyển sách khổng lồ này thì người viết cũng cần mất nhiều công sức hơn và chúng ta cũng cần tốn nhiều trang giấy để viết mục lục lên đó. Ở đây mình muốn nói rằng là:
Đấy là cách giải thích kiểu amateur, còn sau đây là giải thích theo kiểu professional nhé: Theo VietJack thì:
Cơ chế hoạt độngKhi bạn thực hiện truy vấn đến cơ sở dữ liệu. Database Engine sẽ thực hiện việc quét qua toàn bộ tất cả các bản ghi trong bảng đến tìm những bản ghi phù hợp với điều kiện. Những bảng có ít dữ liệu và dữ liệu không phức tạp thì ổn. Tuy nhiên nếu dữ liệu lớn và phức tạp thì việc quét này sẽ rất chậm và tốn rất nhiều tài nguyên của hệ thống. Khi bạn đánh chỉ mục cho bảng. Database Engine sẽ tìm đến chỗ lưu chỉ mục để có thể so sánh và lấy ra vị trí chính xác của hàng dữ liệu phù hợp với điều kiện truy vấn. Qua đó việc đánh INDEX sẽ giúp việc truy vấn dữ liệu trở lên nhanh hơn và tốn ít tài nguyên hơn so với việc quét toàn bộ bản ghi trong bảng. Các loại INDEX trong SQLTrong SQL có 2 loại INDEX đó là:
Bạn có thể xem thêm bài viết INDEX trong SQL: Cách tạo/xóa và lưu ý với các truy vấn có INDEX. Tham khảo: https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described?view=sql-server-2017 Nguồn: vantien.net |