Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mehrspaltige Datenbankindizes und Abfragegeschwindigkeit

Nö. Die Reihenfolge der Spalten im Index ist sehr wichtig. Angenommen, Sie haben einen Index wie diesen:create unique index index_name on table_name (headline, coupon_code, description,expiration_date) In diesem Fall verwenden diese Abfragen den Index

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

und diese Abfragen verwenden nicht den eindeutigen Index:

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

Die Regel ist also ungefähr so. Wenn Sie mehrere Felder zusammen indiziert haben, müssen Sie das erste k-Feld angeben, um den Index verwenden zu können.

Wenn Sie also in der Lage sein möchten, nach beliebigen zu suchen eines dieser Felder dann sollten Sie auf jedem von ihnen separat einen Index erstellen (neben dem kombinierten eindeutigen Index)

Seien Sie auch vorsichtig mit dem LIKE-Operator.

Dies wird den Index SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%'; verwenden und dies wird nicht SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';

Indexnutzung http://dev.mysql.com/doc /refman/5.0/en/mysql-indexes.html mehrspaltiger Index http://dev.mysql. com/doc/refman/5.0/en/multiple-column-indexes.html