Để tăng tốc SELECT DISTINCT, hãy tạo index trên cột hoặc nhóm cột cần distinct. Tạo bảng:
mysql> CREATE TABLE DemoTable (
Name VARCHAR(40)
); Query OK, 0 rows affected (1.13 sec)
Tạo index:
mysql> CREATE INDEX Name_Index ON DemoTable(Name); Query OK, 0 rows affected (1.56 sec)
Chèn dữ liệu (có trùng lặp):
mysql> INSERT INTO DemoTable VALUES('Chris'); Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Mike'); Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('Chris'); Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable VALUES('Chris'); Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('Sam'); Query OK, 1 row affected (0.16 sec)
Hiển thị dữ liệu:
mysql> SELECT * FROM DemoTable;
Kết quả:
+-------+ | Name | +-------+ | Chris | | Chris | | Chris | | Mike | | Sam | +-------+ 5 rows in set (0.00 sec)
Truy vấn distinct (tận dụng index):
mysql> SELECT DISTINCT Name FROM DemoTable;
Kết quả:
+-------+ | Name | +-------+ | Chris | | Mike | | Sam | +-------+ 3 rows in set (0.02 sec)
Giải thích: Index cho phép MySQL quét giá trị duy nhất nhanh hơn thay vì full table sort.