sql >> Databáze >  >> RDS >> Mysql

Vícesloupcové databázové indexy a rychlost dotazů

Ani náhodou. Pořadí sloupců v indexu je velmi důležité. Předpokládejme, že máte index podobný tomuto:create unique index index_name on table_name (headline, coupon_code, description,expiration_date) V tomto případě budou tyto dotazy používat index

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

a tyto dotazy nebudou používat jedinečný index:

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

Takže pravidlo je asi toto. Pokud máte více polí indexovaných společně, musíte zadat prvních k pole, abyste mohli index použít.

Pokud tedy chcete mít možnost vyhledávat jakékoli jedno z těchto polí, pak byste měli vytvořit v indexu na každém z nich samostatně (kromě kombinovaného jedinečného indexu)

Pozor také na operátor LIKE.

toto použije index SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%'; a toto nebude SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';

využití indexu http://dev.mysql.com/doc /refman/5.0/en/mysql-indexes.html index více sloupců http://dev.mysql. com/doc/refman/5.0/en/multiple-column-indexes.html




  1. Oracle LISTAGG() pro dotazování

  2. uložené procedury a problém s mysql_insert_id

  3. Získávání kolekcí po sobě jdoucích dat

  4. MySQL - řazení řetězců oddělených čárkami ve sloupci