Chỉ mục (INDEX) trong SQL

Index trong SQL được dùng như thế nào. Cách đánh index trong SQL như thế nào? Hãy cùng Quantrimang.com tìm hiểu nhé!

Index trong sql là gì?

Index là bảng tra cứu đặc biệt mà công cụ tìm kiếm database có thể dùng để tăng tốc độ truy vấn dữ liệu. Nói đơn giản hơn một index là con trỏ dữ liệu trong một bảng. Nó nằm trong cơ sở dữ liệu tương tự như phần danh mục ở đằng sau một cuốn sách.

Ví dụ, nếu muốn tham chiếu tới tất cả các trang một cuốn sách thảo luận về chủ đề nào đó, đầu tiên, bạn phải tham khảo mục lục. Nó liệt kê tất cả chủ đề theo thứ tự bảng chữ cái cùng với số trang tương ứng.

Một index giúp tăng tốc độ các truy vấn SELECTmệnh đề WHERE, nhưng nó làm chậm quá trình nhập dữ liệu,với các lệnh lệnh UPDATEINSERT. Các index có thể được tạo hoặc loại bỏ mà không ảnh hưởng tới dữ liệu.

Tạo một index liên quan tới lệnh CREATE INDEX, cho phép bạn đặt tên cho index, xác định bảng và cột hoặc cột để lập chỉ mục, đồng thời cho biết mục được sắp xếp theo thứ tự tăng hay giảm dần.

Index cũng có thể là duy nhất, giống như UNIQUE, trong đó index ngăn trùng lặp mục trong cột hoặc nhóm cột có chỉ mục.

Các kiểu index có trong SQL:

  • Single-Column Index
  • Unique Index
  • Composite Index
  • Implicit Index

Để tạo một chỉ mục ta sử dụng lệnh CREATE INDEX, bạn có thể đặt tên cho chỉ mục, xác định bảng, các cột muốn lập chỉ mục và xác định chỉ mục là theo thứ tự tăng dần hoặc giảm dần.

Lệnh CREATE INDEX

Cú pháp cơ bản của lệnh CREATE INDEX trong SQL như sau:

CREATE INDEX ten_index ON ten_bang;

Chỉ mục SINGLE-COLUMN

Single-Column Index được tạo cho duy nhất 1 cột trong bảng. Cú pháp cơ bản như sau:

CREATE INDEX ten_index
ON ten_bang (ten_cot);

Chỉ mục UNIQUE

Unique Index là chỉ mục duy nhất, được sử dụng để tăng hiệu suất và đảm bảo tính toàn vẹn dữ liệu. Một chỉ mục duy nhất không cho phép chèn bất kỳ giá trị trùng lặp nào được chèn vào bảng. Cú pháp cơ bản như sau.

CREATE UNIQUE INDEX ten_index
ON ten_bang (ten_cot);

Chỉ mục COMPOSITE

Composite Index là chỉ mục kết hợp dành cho hai hoặc nhiều cột trong một bảng. Cú pháp cơ bản của nó như sau:

CREATE INDEX ten_index
ON ten_bang (cot1, cot2);

Lưu ý:

  • Việc tạo Single-Column Index hay Composite Index tùy thuộc vào tần suất bạn sử dụng mệnh đề WHERE của truy vấn dưới dạng điều kiện bộ lọc.
  • Nếu chỉ có một cột được sử dụng, thì lựa chọn tốt nhất là Single-column Index. Nếu có hai hoặc nhiều cột được sử dụng thường xuyên trong mệnh đề WHERE như là các bộ lọc thì dạng chỉ mục Composite Index là lựa chọn tối ưu hơn.

IMPLICIT INDEX

Implicit Index (Index ngầm định) là chỉ mục mà được tạo tự động bởi Database Server khi một bảng được tạo. Các Index ngầm định được tạo tự động cho các ràng buộc Primary key và các ràng buộc Unique.

Lệnh DROP INDEX

Khi không cần sử dụng INDEX nữa bạn có thể DROP theo cú pháp sau:

DROP INDEX ten_index;

Bạn nên cẩn thận trong khi xóa một chỉ mục, bởi vì khi đó hiệu suất có thể chậm hơn hoặc không được cải thiện.

Tại sao index trong SQL Server quan trọng?

Lập chỉ mục quan trọng khi bạn muốn nâng cao kỹ năng lập trình. Mặc dù hầu hết mọi người đều biết nó là gì và cách dùng ra sao nhưng lại không hiểu rõ khi nào và dùng nó ở đâu để thay đổi hiệu quả của truy vấn hay quá trình lưu trữ.

Sau đây là một số trường hợp kèm giải thích liên quan tới index:

  • Khi thực hiện truy vấn trên một bảng có dữ liệu lớn ( > 100000 hàng), SQL thực hiện quét toàn bộ bảng, việc này mất nhiều thời gian và máy chủ thường bị hết thời gian chờ. Để tránh điều đó, hãy luôn kiểm tra tùy chọn giải thích cho truy vấn trong để biết về trạng thái thực thi. Nó cho thấy cột nào đang được sử dụng và liệu nó có phải là mối đe dọa đối với dữ liệu hay không dựa trên cơ sở các cột được lặp lại theo thứ tự tương tự trong điều kiện.
  • Thứ tự của chỉ mục có tầm quan trọng rất lớn để xác định lỗi sai. Bạn có thể tạo chỉ mục theo cùng thứ tự để tối đa hóa tốc độ truy vấn.

Tóm lại những điều cần nhớ khi tạo index trong SQL

  • Tránh đánh chỉ mục những bảng/cột được sử dụng nhiều: Càng đánh chỉ mục nhiều trên bảng, tác động tới hiệu quả chèn, cập nhật, xóa và hợp nhất lệnh càng lớn bởi toàn bộ index phải được chỉnh sửa phù hợp. Điều đó có nghĩa SQL Server phải tách trang, chuyển dữ liệu xung quanh và phải làm việc đó cho toàn bộ index bị ảnh hưởng bởi các lệnh DML.
  • Thu hẹp các khóa index bất cứ khi nào có thể: Liên tục thu hẹp index, chỉ một số cột nếu có thể. Những khóa số chính xác là những khóa index SQL hiệu quả nhất. Những khóa này cần ít dung lượng lưu trữ và chi phí bảo trì hơn.
  • Dùng index được nhóm trên các cột duy nhất - Xem xét các cột là duy nhất hay chứa nhiều giá trị riêng và tránh dùng chúng trên những cột thay đổi thường xuyên.
  • Index không theo nhóm trên cột được tìm kiếm thường xuyên.

Ở bài tiếp theo, Quantrimang sẽ cùng bạn thảo luận cách sử dụng lệnh ALTER TABLE trong SQL. Các bạn nhớ theo dõi nhé!

Bài trước: Tạo tên tạm thời bằng ALIAS trong SQL

Bài tiếp: Lệnh ALTER TABLE trong SQL

Thứ Hai, 23/10/2023 17:19
426 👨 99.813
1 Bình luận
Sắp xếp theo
  • One One Nice
    One One Nice cam on
    Thích Phản hồi 07/09/20
    ❖ Học SQL