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

Forstå flere kolonneindekser i MySQL-forespørgsel

Godt spørgsmål.

Indekser fungerer fra venstre mod højre, så din WHERE kriterier ville bruge indekset. Sorteringen ville også bruge indekset i dette tilfælde (udførelsesplan nedenfor).

Fra manualen :

Hvis du havde et enkelt kolonneindeks (accountid ), ville en filesort blive brugt i stedet. Derfor drager din forespørgsel fordel af dette indeks.

To kolonneindeks

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')

Udførelsesplan

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

Enkelt kolonneindeks

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')

Udførelsesplan

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. Hvordan indsætter du en PHP-konstant i en SQL-forespørgsel?

  2. Udfyld PHP Array fra While Loop

  3. Hvordan får man forskellen mellem på hinanden følgende rækker i MySQL?

  4. SQL Server-databaser CPU-brugsstatistik