не Редът на колоните в индекса е много важен. Да предположим, че имате индекс като този:create unique index index_name on table_name (headline, coupon_code, description,expiration_date)
В този случай тези заявки ще използват индекса
select * from table_name where headline = 1
select * from table_name where headline = 1 and cupon_code = 2
и тези заявки няма да използват уникалния индекс:
select * from table_name where coupon_code = 1
select * from table_name where description = 1 and cupon_code = 2
Така че правилото е нещо подобно. Когато имате множество полета, индексирани заедно, тогава трябва да посочите първото k поле, за да можете да използвате индекса.
Така че, ако искате да можете да търсите всеки едно от тези полета, тогава трябва да създадете в индекс на всяко от тях поотделно (освен комбинирания уникален индекс)
Освен това внимавайте с оператора LIKE.
това ще използва индекс SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%';
и това няма да SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';
използване на индекс http://dev.mysql.com/doc /refman/5.0/en/mysql-indexes.html индекс на няколко колони http://dev.mysql. com/doc/refman/5.0/en/multiple-column-indexes.html