CĂN BẢN
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Index trong SQLite

Trong bài học hôm nay chúng ta sẽ cùng tìm hiểu về một khái niệm khá quan trong SQLite đó là index. Vậy index là gì? Có mấy loại index? Khi nào nên sử dụng và khi nào không nên sử dụng index? Chúng ta sẽ cùng tìm hiểu trong nội dung tiếp theo.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Index trong SQLite là gì?

Index là bảng tra cứu đặc biệt mà database search engine có thể sử dụng để tăng tốc độ truy xuất dữ liệu. Nói một cách đơn giản, một index là một con trỏ tới dữ liệu trong một bảng. Một index trong cơ sở dữ liệu rất giống với mục lục của một cuốn sách.

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

Một index giúp tăng tốc các truy vấn SELECT và các mệnh đề WHERE, nhưng nó làm chậm việc dữ liệu nhập vào với các câu lệnh UPDATEINSERT. Các index có thể được tạo hoặc xóa đi mà không ảnh hưởng đến dữ liệu.

Bài viết này được đăng tại [free tuts .net]

Để tạo một index chúng ta sử dụng câu lệnh CREATE INDEX, chúng ta có thể đặt tên cho index, chỉ rõ bảng và cột hoặc nhiều cột để tạo index và  thiết lập index đó theo thứ tự tăng dần hay giảm dần.

Các index cũng có thể là duy nhất, tương tự như ràng buộc UNIQUE, trong đó index ngăn các bản sao trong một cột hoặc kết hợp các cột có index.

2. Lệnh CREATE INDEX trong SQLite

Sau đây là cú pháp cơ bản của CREATE INDEX trong SQLite.

CREATE INDEX index_name ON table_name;

Single-Column Index trong SQLite

Single-Column index là một index được tạo dựa trên chỉ một cột trong bảng. Cú pháp như sau:

CREATE INDEX index_name
ON table_name (column_name);

Unique Index trong SQLite

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

CREATE UNIQUE INDEX index_name
on table_name (column_name);

Composite Index trong SQLite

Composite Index là một index cho hai hoặc nhiều cột của bảng. Cú pháp như sau:

CREATE INDEX index_name
on table_name (column1, column2);

Dù là tạo Single-column index hoặc một Composite index, hãy cân nhắc các cột mà bạn có thể sử dụng thường xuyên trong mệnh đề WHERE của một truy vấn như là điều kiện lọc.

Nếu chỉ có một cột trong bảng được sử dụng, thì lựa chọn tốt nhất sẽ là single-column index. Nếu có hai hoặc nhiều cột thường được sử dụng trong mệnh đề WHERE như là bộ lọc, thì composite index sẽ là lựa chọn tốt nhất.

Implicit Index trong SQLite

Implicit index là các index được tự động tạo bởi máy chủ cơ sở dữ liệu khi một đối tượng được tạo. Các index được tự động tạo cho các ràng buộc khóa chính và các ràng buộc duy nhất.

3. Ví dụ Index trong SQLite

Ví dụ sau đây chúng ta sẽ tạo một index cho cột salary trong bảng COMPANY.

sqlite> CREATE INDEX salary_index ON COMPANY (salary);

Bây giờ chúng ta có thể liệt kê tất cả các index có sẵn trong bảng COMPANY bằng cách sử dụng lệnh .indices như sau:

sqlite> .indices COMPANY

Điều này sẽ tạo ra kết quả sau, trong đó sqlite_autoindex_COMPANY_1 là một implicit index được tạo khi chính bảng COMPANY được tạo.

salary_index
sqlite_autoindex_COMPANY_1

Bạn có thể liệt kê tất cả index trong database như sau:

sqlite> SELECT * FROM sqlite_master WHERE type = 'index';

4. Lệnh DROP INDEX trong SQLite

Để xóa index trong SQLite các bạn có thể sử dụng lệnh DROP. Các bạn cần phải thận trọng khi xóa index vì hiệu suất có thể bị chậm hơn hoặc không được cải thiện.

Cú pháp như sau:

DROP INDEX index_name;

Bạn có thể sử dụng câu lệnh sau để xóa index đã tạo trước đó.

sqlite> DROP INDEX salary_index;

5. Khi nào nên tránh tạo index trong SQLite

Mặc dù các index được sử dụng để tăng cường hiệu suất của cơ sở dữ liệu, nhưng có một số trường hợp chúng ta không nên sử dụng index. Các hướng dẫn sau đây cho biết khi nào chúng ta không nên sử dụng index.

Index không nên được sử dụng trong các trường hợp sau:

  • Các bảng nhỏ
  • Các bạn có các hoạt động update hoặc insert thường xuyên
  • Các cột chứa số lượng lớn giá trị null
  • Các cột thường xuyên bị sửa đổi

Cùng chuyên mục:

Các hàm hữu ích trong SQLite

Các hàm hữu ích trong SQLite

SQLite có nhiều hàm dựng sẵn để thực hiện xử lý trên dữ liệu chuỗi…

Date & Time trong SQLite

Date & Time trong SQLite

SQLite hỗ trợ năm hàm ngày và giờ như date(timestring, modifiers...), time(timestring, modifiers...), datetime(timestring, modifiers...),…

VACUUM trong SQLite

VACUUM trong SQLite

Lệnh VACUUM trong SQLite làm sạch cơ sở dữ liệu chính bằng cách sao chép…

EXPLAIN trong SQLite

EXPLAIN trong SQLite

Câu lệnh SQLite có thể được bắt đầu bằng từ khóa "EXPLAIN" hoặc bằng cụm…

SQL Injection trong SQLite

SQL Injection trong SQLite

Nếu bạn nhận user input thông qua một Webpage và chèn nó vào trong một…

Tăng tự động AUTOINCREMENT trong SQLite

Tăng tự động AUTOINCREMENT trong SQLite

AUTOINCREMENT trong SQLite là một từ khóa được sử dụng để tự động tăng giá…

Subquery trong SQLite

Subquery trong SQLite

Subquery hoặc Inner query hoặc Nested query là một truy vấn bên trong một truy…

Transaction trong SQLite

Transaction trong SQLite

Một transaction là một đơn vị công việc được thực hiện đối với một cơ…

Tìm hiểu View trong SQLite

Tìm hiểu View trong SQLite

Một view không có gì khác hơn một câu lệnh SQLite được lưu trữ trong…

Lệnh TRUNCATE TABLE trong SQLite

Lệnh TRUNCATE TABLE trong SQLite

Thật không may, không có lệnh TRUNCATE TABLE trong SQLite nhưng bạn có thể sử…

Lệnh ALTER TABLE trong SQLite

Lệnh ALTER TABLE trong SQLite

Lệnh ALTER TABLE trong SQLite dùng để sửa đổi một bảng hiện có mà không…

Mệnh đề INDEXED BY trong SQLite

Mệnh đề INDEXED BY trong SQLite

Mệnh đề "INDEXED BY index-name" chỉ định rằng index-name phải được sử dụng để tìm…

Tìm hiểu Trigger trong SQLite

Tìm hiểu Trigger trong SQLite

Trigger trong SQLite là các hàm callback, mà tự động được thực hiện/gọi (performed/invoked) khi…

Cú pháp ALIAS trong SQLite

Cú pháp ALIAS trong SQLite

Bạn có thể đổi tên tạm thời một bảng hoặc một cột bằng cách đặt…

Toán tử UNION trong SQLite

Toán tử UNION trong SQLite

Toán tử UNION trong SQLite được sử dụng để kết hợp các kết quả của…

Lệnh JOIN trong SQLite

Lệnh JOIN trong SQLite

Lệnh JOIN trong SQLite được sử dụng để kết hợp các bản ghi từ hai…

Các ràng buộc Constraint trong SQLite

Các ràng buộc Constraint trong SQLite

Các ràng buộc (Constraints) là các quy tắc được thi hành trên một cột dữ…

Lệnh PRAGMA trong SQLite

Lệnh PRAGMA trong SQLite

Lệnh PRAGMA trong SQLite là một lệnh đặc biệt được sử dụng để kiểm soát…

Từ khóa DISTINCT trong SQLite

Từ khóa DISTINCT trong SQLite

Từ khóa DISTINCT trong SQLite được sử dụng cùng với câu lệnh SELECT để loại…

Mệnh đề HAVING trong SQLite

Mệnh đề HAVING trong SQLite

Mệnh đề HAVING trong SQLite cho phép bạn chỉ định các điều kiện lọc kết…

Top