sql >> Database >  >> RDS >> Mysql

Inzicht in meerdere kolomindexen in MySQL-query

Goede vraag.

Indexen werken van links naar rechts, dus uw WHERE criteria zouden de index gebruiken. De sortering zou in dit geval ook de index gebruiken (uitvoeringsplan hieronder).

Uit de handleiding :

Als u een index met één kolom had (accountid ), zou in plaats daarvan een filesort worden gebruikt. Daarom profiteert uw zoekopdracht wel van die index.

Index met twee kolommen

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

Uitvoeringsplan

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

Enkelkolomsindex

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

Uitvoeringsplan

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. Hoe kan ik de relevantie van MySQL-zoekopdrachten in volledige tekst manipuleren om het ene veld 'waardevoller' te maken dan het andere?

  2. Oracle TNS-namen worden niet weergegeven bij het toevoegen van een nieuwe verbinding met SQL Developer

  3. Hoe PLAFOND() werkt in MariaDB

  4. Uitzondering in verband met mysql via jdbc