Nie. Bardzo ważna jest kolejność kolumn w indeksie. Załóżmy, że masz indeks podobny do tego:create unique index index_name on table_name (headline, coupon_code, description,expiration_date)
W takim przypadku te zapytania będą używać indeksu
select * from table_name where headline = 1
select * from table_name where headline = 1 and cupon_code = 2
a te zapytania nie będą używać unikalnego indeksu:
select * from table_name where coupon_code = 1
select * from table_name where description = 1 and cupon_code = 2
Więc zasada jest taka. Jeśli masz zindeksowanych razem wiele pól, musisz określić pierwsze pole k, aby móc korzystać z indeksu.
Jeśli więc chcesz mieć możliwość wyszukiwania dowolnego jedno z tych pól należy utworzyć w indeksie na każdym z nich osobno (oprócz połączonego unikalnego indeksu)
Uważaj także na operator LIKE.
użyje to indeksu SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%';
a to nie spowoduje SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';
wykorzystanie indeksu http://dev.mysql.com/doc /refman/5.0/pl/mysql-indexes.html indeks wielu kolumn http://dev.mysql. com/doc/refman/5.0/en/multiple-column-indexes.html