sql >> Databasteknik >  >> RDS >> Mysql

Förstå flera kolumnindex i MySQL-fråga

Bra fråga.

Index fungerar från vänster till höger, så din WHERE kriterier skulle använda indexet. Sorteringen skulle också använda indexet i detta fall (utförandeplan nedan).

Från manualen :

Om du hade ett enda kolumnindex (accountid ), skulle en filsortering användas istället. Därför drar din fråga nytta av det indexet.

Två kolumnindex

create table t1 (
  accountid tinyint,
  logindate date);

create index idx on t1 (accountid, logindate);

insert into t1 values (1, '2012-09-05'), (2, '2012-09-09'), (3, '2012-09-04'), 
    (1, '2012-09-01'), (1, '2012-09-26'), (2, '2012-05-16'), 
    (1, '2012-09-01'), (3, '2012-10-19'), (1, '2012-03-01')

Utförandeplan

ID  SELECT_TYPE  TABLE  TYPE  POSSIBLE_KEYS  KEY  KEY_LEN  REF   ROWS  FILTERED  EXTRA
1   SIMPLE       t1     ref   idx            idx  2        const 5     100       Using where; Using index

Index för en kolumn

create table t1 (
  accountid tinyint,
  logindate date);

create index idx on t1 (accountid);

insert into t1 values (1, '2012-09-05'), (2, '2012-09-09'), (3, '2012-09-04'), 
    (1, '2012-09-01'), (1, '2012-09-26'), (2, '2012-05-16'), (1, '2012-09-01'), 
    (3, '2012-10-19'), (1, '2012-03-01')

Utförandeplan

ID  SELECT_TYPE  TABLE  TYPE   POSSIBLE_KEYS  KEY  KEY_LEN  REF   ROWS  FILTERED  EXTRA
1   SIMPLE       t1     range  idx            idx  2              5     100       Using where; Using filesort



  1. PHP + MySql + lagrade procedurer, hur får jag tillgång till ett out-värde?

  2. Oracle SQL, sammanfoga flera kolumner + lägg till text

  3. Skillnaden mellan LIKE och =i MYSQL?

  4. Infoga filinnehållet i MySQL-tabellens kolumn