Thêm chỉ mục trên cột kiểu int là một lựa chọn tốt để chạy truy vấn của bạn nhanh hơn bất cứ khi nào bảng của bạn có nhiều bản ghi.
Nếu bảng của bạn có ít bản ghi thì sử dụng chỉ mục trên cột kiểu int không phải là một lựa chọn tốt.
Để hiểu khái niệm, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -
mysql> create table indexOnIntColumnDemo -> ( -> UserId int, -> UserName varchar(20), -> UserAge int, -> INDEX(UserId) -> ); Query OK, 0 rows affected (0.85 sec)
Bây giờ hãy kiểm tra mô tả của bảng -
mysql> desc indexOnIntColumnDemo;
Đây là kết quả -
+----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | UserId | int(11) | YES | MUL | NULL | | | UserName | varchar(20) | YES | | NULL | | | UserAge | int(11) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.04 sec)
Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau -
mysql> insert into indexOnIntColumnDemo values(1001,'John',23); Query OK, 1 row affected (0.22 sec) mysql> insert into indexOnIntColumnDemo values(1002,'Sam',25); Query OK, 1 row affected (0.14 sec) mysql> insert into indexOnIntColumnDemo values(1003,'Carol',22); Query OK, 1 row affected (0.24 sec) mysql> insert into indexOnIntColumnDemo values(1004,'Mike',26); Query OK, 1 row affected (0.14 sec)
Bây giờ bạn có thể hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -
mysql> select *from indexOnIntColumnDemo;
Sau đây là kết quả -
+--------+----------+---------+ | UserId | UserName | UserAge | +--------+----------+---------+ | 1001 | John | 23 | | 1002 | Sam | 25 | | 1003 | Carol | 22 | | 1004 | Mike | 26 | +--------+----------+---------+ 4 rows in set (0.00 sec)
Để chạy nó nhanh hơn, hãy sử dụng điều kiện trên cột chỉ mục của kiểu int
mysql> select *from indexOnIntColumnDemo where UserId=1004;
Kết quả như sau
+--------+----------+---------+ | UserId | UserName | UserAge | +--------+----------+---------+ | 1004 | Mike | 26 | +--------+----------+---------+ 1 row in set (0.00 sec)