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

Multi-kolonne databaseindekser og forespørgselshastighed

Nix. Rækkefølgen af ​​kolonnerne i indekset er meget vigtig. Lad os antage, at du har et indeks som dette:create unique index index_name on table_name (headline, coupon_code, description,expiration_date) I dette tilfælde vil disse forespørgsler bruge indekset

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

og disse forespørgsler bruger ikke det unikke indeks:

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

Så reglen er sådan her. Når du har flere felter indekseret sammen, så skal du angive det første k felt for at kunne bruge indekset.

Så hvis du vil være i stand til at søge efter enhver et af disse felter, så skal du oprette på indeks på hver af dem separat (udover det kombinerede unikke indeks)

Vær også forsigtig med LIKE-operatøren.

dette vil bruge indeks SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%'; og dette vil ikke SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';

indeksbrug http://dev.mysql.com/doc /refman/5.0/da/mysql-indexes.html multiple column index http://dev.mysql. com/doc/refman/5.0/da/multiple-column-indexes.html




  1. Indsæt underforespørgsel i Vælg forespørgsel

  2. Kan jeg i MySQL kopiere en række til at indsætte i den samme tabel?

  3. Er der nogen hukommelsesgrænse for json_encode()-metoden?

  4. PDO - Indsæt stort array til MySQL-database