Không. Thứ tự của các cột trong chỉ mục là rất quan trọng. Giả sử bạn có một chỉ mục như sau:create unique index index_name on table_name (headline, coupon_code, description,expiration_date)
Trong trường hợp này, các truy vấn này sẽ sử dụng chỉ mục
select * from table_name where headline = 1
select * from table_name where headline = 1 and cupon_code = 2
và những truy vấn này sẽ không sử dụng chỉ mục duy nhất:
select * from table_name where coupon_code = 1
select * from table_name where description = 1 and cupon_code = 2
Vì vậy, quy tắc là một cái gì đó như thế này. Khi bạn có nhiều trường được lập chỉ mục cùng nhau, thì bạn phải chỉ định k trường đầu tiên để có thể sử dụng chỉ mục.
Vì vậy, nếu bạn muốn có thể tìm kiếm bất kỳ một trong các trường này thì bạn nên tạo trên chỉ mục trên từng trường riêng biệt (bên cạnh chỉ mục duy nhất được kết hợp)
Ngoài ra, hãy cẩn thận với toán tử LIKE.
điều này sẽ sử dụng chỉ mục SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%';
và điều này sẽ không SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';
sử dụng chỉ mục http://dev.mysql.com/doc /refman/5.0/en/mysql-indexes.html chỉ mục nhiều cột http://dev.mysql. com / doc / refman / 5.0 / en / multi-column-indexes.html