Mysql
 sql >> Base de données >  >> RDS >> Mysql

Index de base de données multi-colonnes et vitesse de requête

Non. L'ordre des colonnes dans l'index est très important. Supposons que vous ayez un index comme celui-ci :create unique index index_name on table_name (headline, coupon_code, description,expiration_date) Dans ce cas ces requêtes utiliseront l'index

select * from table_name where headline = 1
select * from table_name where headline = 1 and cupon_code = 2

et ces requêtes n'utiliseront pas l'index unique :

select * from table_name where coupon_code = 1
select * from table_name where description = 1 and cupon_code = 2

Donc, la règle est quelque chose comme ça. Lorsque vous avez plusieurs champs indexés ensemble, vous devez spécifier le premier champ k pour pouvoir utiliser l'index.

Donc, si vous voulez pouvoir rechercher tout un de ces champs alors vous devez créer un index sur chacun d'eux séparément (en plus de l'index unique combiné)

Soyez également prudent avec l'opérateur LIKE.

cela utilisera l'index SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%'; et cela ne sera pas SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';

utilisation de l'index http://dev.mysql.com/doc /refman/5.0/en/mysql-indexes.html index de colonnes multiples http://dev.mysql. com/doc/refman/5.0/en/multiple-column-indexes.html