Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách tăng tốc SELECT DISTINCT trong MySQL

Để 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.