Cách sử dụng index trong SQL

Index [chỉ mục] trong SQL được tạo ra trên các bảng hiện có để lấy các hàng nhanh chóng. Trong bài viết dưới đây Taimienphi.vn sẽ cung cấp cho các thông tin để có thể hiểu rõ hơn về Index trong SQL, cú pháp cũng như cách sử dụng.

Nếu một bảng có hàng nghìn bản ghi, việc lấy thông tin sẽ mất rất nhiều thời gian. Vì vậy Index được tạo ra trên các cột được truy cập thường xuyên để lấy các thông tin nhanh hơn.

Index trong SQL có thể được tạo trên một cột hoặc một nhóm cột. Khi một Index SQL được tạo, đầu tiên nó sẽ sắp xếp dữ liệu, sau đó gán một ROWID cho mỗi hàng.

Cú pháp để tạo Index trong SQL

Cú pháp để tạo Index trong SQL có dạng:

CREATE INDEX index_name

ON table_name [column_name1,column_name2...];

Cú pháp để tạo một Index SQL duy nhất:

CREATE UNIQUE INDEX index_name

ON table_name [column_name1,column_name2...];

Trong đó:

- index_name là tên của INDEX.
- table_name là tên của bảng mà cột được lập Index.
- column_name1, column_name2 .. là danh sách các cột tạo INDEX.

Trong Oracle, có 2 loại Index SQL là Implicit Index và Explicit Index.

Implicit Index

Implicit Index được tạo ra khi cột được mô tả rõ ràng với PRIMARY KEY, UNIQUE KEY Constraint.

Explicit Index

Explicit Index được tạo ra bằng cách sử dụng cú pháp "create index.. ".

Lưu ý với Index trong SQL

1. Mặc dù Index SQL được tạo ra để truy cập các hàng trong bảng nhanh chóng, tuy nhiên nó làm chậm phép thực thi các câu truy vấn của DML như INSERT, UPDATE, DELETE trên bảng vì Index SQL và bảng được cập nhật cùng lúc khi thao DML được thực hiện. Vì vậy chỉ sử dụng Index trong SQL trong các cột được sử dụng để tìm kiếm bảng thường xuyên.
2. Không bắt buộc phải tạo Index trên bảng có ít dữ liệu.
3. Trong cơ sở dữ liệu Oracle, bạn có thể xác định tối đa 16 cột trong INDEX.

//thuthuat.taimienphi.vn/index-trong-sql-33414n.aspx
Như vậy trên đây Taimienphi.vn vừa giới thiệu cho bạn các thông tin về Index trong SQL cũng như một số lưu ý với Index trong SQL. Ngoài ra, bạn đọc có thể tìm hiểu chi tiết lệnh VIEW trong SQL để tạo một bảng ảo trong SQL, bước đầu làm quen với cấu trúc quản lý cơ sở dữ liệu.

  • Lời mở đầu
  • Cách tạo INDEX
    • Ví dụ tạo index
  • Xóa INDEX
    • Ví dụ xóa index:
  • Một vài lưu ý khi sử dụng INDEX

Lời mở đầu

Chào các bạn, ở trong bài viết trước: INDEX trong SQL: Tổng quan, khái niệm, cơ chế hoạt động mình đã nói về một vài những giới thiệu tổng quan về INDEX trong SQL như là:

  • Cơ chế hoạt động của INDEX
  • Các loại INDEX

Nếu như các bạn chưa đọc bài viết trước thì hãy click vào link bên trên để có thể hiểu được cơ bản về nó nhé. Trong bài viết này mình sẽ hướng dẫn các bạn cách tạo/xóa INDEX trong bảng và một vài lưu ý để sử dụng INDEX trong SQL nhé.

Cách tạo INDEX

Để tạo INDEX trong SQL, các bạn sử dụng câu query sau [giá trị của trường được phép trùng nhau không ràng buộc]:

CREATE INDEX index_name
ON table_name [column1, column2, ...];

Để tạo unique index [giá trị của trường là duy nhất, không được phép trùng nhau]:

CREATE UNIQUE INDEX index_name
ON table_name [column1, column2, ...];

Ví dụ tạo index

Ví dụ bạn đang có table users với các cột:

  • id [Primary Key, Auto Increament]
  • username
  • email
  • password

Vì cột id là khóa chính nên nó mặc định sẽ được đánh index dạng unique. Chính vì vậy nếu bạn truy vấn tìm kiếm bản ghi thông qua id thường rất nhanh là vậy.

Bởi vì bây giờ bạn truy vấn rất nhiều đến dữ liệu của cột username chính vì vậy bạn muốn đánh INDEX cho nó để giúp truy vấn nhanh hơn:

CREATE INDEX idx_username
ON users [username];

Truy vấn đến username và email rất nhiều [và thường 2 trường này luôn được tìm kiếm song song trong câu query, kiểu như: WHERE username = ‘VanTien’ AND email = ‘’]. Lúc này bạn có thể tạo 1 index tổ hợp [compound index] cho 2 cột này bằng cách:

CREATE INDEX idx_username_email
ON users [username, email];

Lưu ý: Bạn tạo INDEX như trên và việc tạo 2 INDEX cho 2 cột như dưới đây nó sẽ khác nhau đấy nhé.

CREATE INDEX idx_username
ON users [username];
CREATE INDEX idx_email
ON users [email];

Việc bạn tạo index dạng compound sẽ tốt hơn cho việc truy vấn kết 2 cột lại với nhau đấy nhé. Ví dụ như bạn cần tìm user có cả 2 điều kiện là: username = ‘TienDepTrai’ AND email = ‘’. Thì dạng compound sẽ cần duyệt qua ít bản ghi hơn là so với dạng đơn lẻ bên trên. Chi tiết bạn có thể xem tại đây nhé: A mini-lesson in “compound indexes”.

Xóa INDEX

Nếu bạn không muốn sử dụng INDEX nữa thì bạn hoàn toàn có thể xóa bằng cách sử dụng:

DROP INDEX index_name ON table_name;

Trong MySQL bạn sẽ có thêm 1 cách nữa là:

ALTER TABLE table_name
DROP INDEX index_name;

Ví dụ xóa index:

Vẫn là bảng users bên trên và giả định là bạn đã tạo 1 index là idx_username nhé. Bây giờ bạn không muốn sử dụng INDEX cho nó nữa thì bạn có thể chạy:

DROP INDEX idx_username ON users;

Hoặc

ALTER TABLE idx_username
DROP INDEX users;

Một vài lưu ý khi sử dụng INDEX

– Bạn hãy cố gắng tránh sử dụng các toán tử sau trong mệnh đề WHERE như là: “IS NULL”, “”, “!=”, “!>”, “!

Chủ Đề