Mysql
 sql >> Database >  >> RDS >> Mysql

Indici di database a più colonne e velocità di query

No. L'ordine delle colonne nell'indice è molto importante. Supponiamo che tu abbia un indice come questo:create unique index index_name on table_name (headline, coupon_code, description,expiration_date) In questo caso queste query utilizzeranno l'indice

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

e queste query non utilizzeranno l'indice univoco:

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

Quindi la regola è qualcosa del genere. Quando hai più campi indicizzati insieme, devi specificare il primo k campo per poter utilizzare l'indice.

Quindi, se vuoi essere in grado di cercare qualsiasi uno di questi campi quindi dovresti creare su index su ciascuno di essi separatamente (oltre all'indice univoco combinato)

Inoltre, fai attenzione con l'operatore LIKE.

questo utilizzerà l'indice SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%'; e questo non SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';

utilizzo dell'indice http://dev.mysql.com/doc /refman/5.0/en/mysql-indexes.html indice a colonne multiple http://dev.mysql. com/doc/refman/5.0/en/multiple-column-indexes.html