sql >> Databasteknik >  >> RDS >> Mysql

Databasindex med flera kolumner och frågehastighet

Nej. Ordningen på kolumnerna i indexet är mycket viktig. Låt oss anta att du har ett index som detta:create unique index index_name on table_name (headline, coupon_code, description,expiration_date) I det här fallet kommer dessa frågor att använda indexet

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

och dessa frågor kommer inte att använda det unika indexet:

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

Så regeln är ungefär så här. När du har flera fält indexerade tillsammans måste du ange det första k-fältet för att kunna använda indexet.

Så om du vill kunna söka efter alla ett av dessa fält ska du skapa på index på vart och ett av dem separat (förutom det kombinerade unika indexet)

Var också försiktig med LIKE-operatören.

detta kommer att använda index SELECT * FROM tbl_name WHERE key_col LIKE 'Patrick%'; och detta kommer inte att SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';

indexanvändning http://dev.mysql.com/doc /refman/5.0/en/mysql-indexes.html index för flera kolumner http://dev.mysql. com/doc/refman/5.0/en/multiple-column-indexes.html




  1. Rails:rake db:create:all misslyckas med att ansluta till PostgreSQL-databasen

  2. Returnera den sökta informationen från sqlite

  3. Installera PostGresQL &MySQL i Mac OS X som kör MAMP?

  4. Jämför rader i orakeltabellen och uppdatera matchande