Tạo bảng và chỉ mục (INDEX) trong MySQL
Chỉ mục tăng tốc truy vấn SELECT, JOIN, WHERE, ORDER BY trên cột được index.
Cách 1: Tạo bảng rồi thêm index riêng
CREATE TABLE ten_bang ( cot1 kieu_du_lieu, cot2 kieu_du_lieu, ... ); CREATE INDEX ten_index_1 ON ten_bang(cot1); CREATE INDEX ten_index_2 ON ten_bang(cot2);
Ví dụ minh họa
mysql> create table DemoTable ( Id int, Name varchar(20) ); Query OK, 0 rows affected (0.63 sec)
mysql> create index id_index on DemoTable(Id); Query OK, 0 rows affected (0.36 sec) mysql> create index Name_index on DemoTable(Name); Query OK, 0 rows affected (0.38 sec)
Kiểm tra cấu trúc bảng
mysql> show create table DemoTable;
+---------------+-----------------------------------------------------------------------------------------+ | Table | Create Table | +---------------+-----------------------------------------------------------------------------------------+ | DemoTable | CREATE TABLE `DemoTable` ( `Id` int(11) DEFAULT NULL, `Name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, KEY `id_index` (`Id`), KEY `Name_index` (`Name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | +---------------+-----------------------------------------------------------------------------------------+
Cách 2: Tạo index ngay trong CREATE TABLE
CREATE TABLE DemoTable (
Id int,
Name varchar(20),
INDEX id_index (Id),
INDEX Name_index (Name)
);
Các loại Index phổ biến:
- INDEX / KEY: Chỉ mục thông thường (cho phép trùng, NULL)
- UNIQUE INDEX: Chỉ mục duy nhất (không trùng, cho phép NULL)
- PRIMARY KEY: Khóa chính (duy nhất, NOT NULL, chỉ 1/bảng)
- FULLTEXT: Tìm kiếm toàn văn bản
- SPATIAL: Dữ liệu không gian
Lưu ý: Index làm chậm INSERT/UPDATE/DELETE (cần cập nhật index). Chỉ tạo index trên cột thường xuyên dùng trong WHERE, JOIN, ORDER BY.